diff options
author | Peter Pentchev <roam@ringlet.net> | 2018-05-04 23:59:04 +0300 |
---|---|---|
committer | Niels Thykier <niels@thykier.net> | 2018-05-10 06:10:40 +0000 |
commit | 0e103163a8deac65724e543250234c6e82d99906 (patch) | |
tree | 3d1e8d25fbabf3b996429b9a8cf07f2e594a1d60 /t | |
parent | 133155e19c391d6dace72a698d8abea21da5b4ac (diff) | |
download | debhelper-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.pm | 8 | ||||
-rw-r--r-- | t/debhelper-compat/debian/control | 12 | ||||
-rwxr-xr-x | t/debhelper-compat/syntax.t | 79 |
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)"); + }; + }; +} |