summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorPeter Pentchev <roam@ringlet.net>2018-05-04 23:59:04 +0300
committerNiels Thykier <niels@thykier.net>2018-05-10 06:10:40 +0000
commit0e103163a8deac65724e543250234c6e82d99906 (patch)
tree3d1e8d25fbabf3b996429b9a8cf07f2e594a1d60 /t
parent133155e19c391d6dace72a698d8abea21da5b4ac (diff)
downloaddebhelper-0e103163a8deac65724e543250234c6e82d99906.tar.gz
Lay the groundwork for testing debhelper-compat.
Simulate gen-provides's enumeration of the supported compat levels in the Test::DH module's non_deprecated_compat_levels() function. Add the resetcompat() and resetpackages() testing aids to Dh_Lib. Silence the "debhelper-compat is experimental" warning during testing. Add the debhelper-compat/syntax.t test. Signed-off-by: Niels Thykier <niels@thykier.net>
Diffstat (limited to 't')
-rw-r--r--t/Test/DH.pm8
-rw-r--r--t/debhelper-compat/debian/control12
-rwxr-xr-xt/debhelper-compat/syntax.t79
3 files changed, 98 insertions, 1 deletions
diff --git a/t/Test/DH.pm b/t/Test/DH.pm
index c8ea2a02..20e6e9f6 100644
--- a/t/Test/DH.pm
+++ b/t/Test/DH.pm
@@ -39,7 +39,7 @@ our @EXPORT = qw(
each_compat_up_to_and_incl_subtest each_compat_subtest
each_compat_from_and_above_subtest run_dh_tool
uid_0_test_is_ok create_empty_file readlines
- error find_script
+ error find_script non_deprecated_compat_levels
);
our ($TEST_DH_COMPAT, $ROOT_OK, $ROOT_CMD);
@@ -220,4 +220,10 @@ sub find_script {
return @files;
}
+sub non_deprecated_compat_levels() {
+ my $start = Debian::Debhelper::Dh_Lib::LOWEST_NON_DEPRECATED_COMPAT_LEVEL;
+ my $end = Debian::Debhelper::Dh_Lib::MAX_COMPAT_LEVEL;
+ return ($start..$end);
+}
+
1;
diff --git a/t/debhelper-compat/debian/control b/t/debhelper-compat/debian/control
new file mode 100644
index 00000000..1f18f4db
--- /dev/null
+++ b/t/debhelper-compat/debian/control
@@ -0,0 +1,12 @@
+Source: foo
+Section: misc
+Priority: optional
+Build-Depends: BUILD_DEPENDS
+Maintainer: Test <testing@nowhere>
+Rules-Requires-Root: no
+Standards-Version: 3.9.8
+
+Package: foo
+Architecture: all
+Description: package foo
+ Package foo
diff --git a/t/debhelper-compat/syntax.t b/t/debhelper-compat/syntax.t
new file mode 100755
index 00000000..7dee80fe
--- /dev/null
+++ b/t/debhelper-compat/syntax.t
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More;
+
+use File::Basename qw(dirname);
+use File::Temp qw(tempdir);
+use lib dirname(dirname(__FILE__));
+use Test::DH;
+
+use Debian::Debhelper::Dh_Lib qw(!dirname);
+
+my $TEST_DIR = dirname(__FILE__);
+
+sub test_build_depends {
+ my ($level, $build_depends) = @_;
+ my $dir = tempdir(CLEANUP => 1);
+ if (not mkdir("$dir/debian", 0777)) {
+ error("mkdir $dir/debian failed: $!");
+ }
+ open my $in, '<', "$TEST_DIR/debian/control" or
+ error("open $TEST_DIR/debian/control failed: $!");
+ open my $out, '>', "$dir/debian/control" or
+ error("open $dir/debian/control failed: $!");
+ while (<$in>) {
+ s/BUILD_DEPENDS/$build_depends/;
+ print $out $_ or
+ error("write to $dir/debian/control failed: $!");
+ }
+ close($out) or
+ error("close $dir/debian/control failed: $!");
+ close($in);
+
+ my $start_dir = Test::DH::cwd();
+ chdir($dir) or error("chdir($dir): $!");
+
+ plan(tests => 5);
+
+ local $ENV{DH_INTERNAL_TESTSUITE_SILENT_WARNINGS} = 1;
+ Debian::Debhelper::Dh_Lib::resetpackages;
+ Debian::Debhelper::Dh_Lib::resetcompat;
+ my @pkgs = getpackages;
+ ok(scalar @pkgs == 1);
+ ok($pkgs[0] eq 'foo');
+
+ ok(compat($level));
+ ok(compat($level + 1));
+ ok(!compat($level - 1));
+
+ chdir($start_dir) or
+ error("chdir($start_dir): $!");
+}
+
+my @levels = non_deprecated_compat_levels;
+plan(tests => scalar @levels);
+
+for my $level (@levels) {
+ subtest "compat $level" => sub {
+ plan(tests => 6);
+ subtest 'only' => sub {
+ test_build_depends($level, "debhelper-compat (= $level)");
+ };
+ subtest 'first' => sub {
+ test_build_depends($level, "debhelper-compat (= $level), bar");
+ };
+ subtest 'second' => sub {
+ test_build_depends($level, "bar, debhelper-compat (= $level)");
+ };
+ subtest 'first-nl' => sub {
+ test_build_depends($level, "debhelper-compat (= $level),\n bar");
+ };
+ subtest 'second-nl' => sub {
+ test_build_depends($level, "bar,\n debhelper-compat (= $level)");
+ };
+ subtest 'nl-second' => sub {
+ test_build_depends($level, "\n bar,\n debhelper-compat (= $level)");
+ };
+ };
+}