summaryrefslogtreecommitdiff
path: root/scripts/t/Dpkg_Shlibs.t
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/t/Dpkg_Shlibs.t')
-rw-r--r--scripts/t/Dpkg_Shlibs.t55
1 files changed, 51 insertions, 4 deletions
diff --git a/scripts/t/Dpkg_Shlibs.t b/scripts/t/Dpkg_Shlibs.t
index 5937e5941..cde647c7a 100644
--- a/scripts/t/Dpkg_Shlibs.t
+++ b/scripts/t/Dpkg_Shlibs.t
@@ -16,7 +16,7 @@
use strict;
use warnings;
-use Test::More tests => 118;
+use Test::More tests => 122;
use Cwd;
use IO::String;
@@ -355,10 +355,28 @@ is(${$io->string_ref()},
| libbasictags1 (>= 1.1)
symbol11_optional@Base 1.1 1
symbol21_amd64@Base 2.1
+ symbol25_64@Base 2.5
+ symbol26_little@Base 2.6
symbol31_randomtag@Base 3.1
symbol51_untagged@Base 5.1
', 'template vs. non-template on amd64');
+# Dumping in non-template mode (mips) (test for arch tags)
+$io = IO::String->new();
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/basictags.symbols", arch => 'mips');
+$sym_file->output($io);
+is(${$io->string_ref()},
+'libbasictags.so.1 libbasictags1 #MINVER#
+| libbasictags1 (>= 1.1)
+ symbol11_optional@Base 1.1 1
+ symbol23_mips@Base 2.3
+ symbol24_32@Base 2.4
+ symbol27_big@Base 2.7
+ symbol31_randomtag@Base 3.1
+ symbol42_mips_and_optional@Base 4.2
+ symbol51_untagged@Base 5.1
+', 'template vs. non-template on mips');
+
# Dumping in non-template mode (i386) (test for arch tags)
$io = IO::String->new();
$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/basictags.symbols", arch => 'i386');
@@ -369,6 +387,9 @@ is(${$io->string_ref()},
| libbasictags1 (>= 1.1)
symbol11_optional@Base 1.1 1
symbol22_i386@Base 2.2
+ symbol24_32@Base 2.4
+ symbol26_little@Base 2.6
+ symbol28_little_32@Base 2.8
symbol31_randomtag@Base 3.1
symbol41_i386_and_optional@Base 4.1
symbol51_untagged@Base 5.1
@@ -443,6 +464,9 @@ is( $sym->get_symbolspec(1), ' symbol21_amd64@Base 2.1', 'no tags => no quotes i
# - arch specific symbol disappears
delete $tags_obj_i386->{dynsyms}{'symbol22_i386@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol24_32@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol26_little@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol28_little_32@Base'};
delete $tags_obj_i386->{dynsyms}{'symbol41_i386_and_optional@Base'};
$sym_file->merge_symbols($tags_obj_i386, '100.MISSING');
@@ -450,9 +474,30 @@ $sym = $sym_file->lookup_symbol('symbol22_i386@Base', ['libbasictags.so.1'], 1);
is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol22_i386@Base',
symbol_templ => 'symbol22_i386@Base',
minver => '2.2', dep_id => 0, deprecated => '100.MISSING',
- tags => { arch => '!amd64 !ia64 !alpha' },
+ tags => { arch => '!amd64 !ia64 !mips' },
tagorder => [ 'arch' ]),
'disappeared arch specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol24_32@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol24_32@Base',
+ symbol_templ => 'symbol24_32@Base',
+ minver => '2.4', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-bits' => '32' },
+ tagorder => [ 'arch-bits' ]),
+ 'disappeared arch bits specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol26_little@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol26_little@Base',
+ symbol_templ => 'symbol26_little@Base',
+ minver => '2.6', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-endian' => 'little' },
+ tagorder => [ 'arch-endian' ]),
+ 'disappeared arch endian specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol28_little_32@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol28_little_32@Base',
+ symbol_templ => 'symbol28_little_32@Base',
+ minver => '2.8', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-bits' => '32', 'arch-endian' => 'little' },
+ tagorder => [ 'arch-bits', 'arch-endian' ]),
+ 'disappeared arch bits and endian specific symbol gets deprecated');
$sym = $sym_file->lookup_symbol('symbol41_i386_and_optional@Base', ['libbasictags.so.1'], 1);
is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol41_i386_and_optional@Base',
symbol_templ => 'symbol41_i386_and_optional@Base',
@@ -461,8 +506,10 @@ is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol41_i386_and_optional@
tags => { arch => 'i386', optional => 'reason' },
tagorder => [ 'arch', 'optional' ]),
'disappeared optional arch specific symbol gets deprecated');
-@tmp = map { $_->{symbol}->get_symbolname() } $sym_file->get_lost_symbols($sym_file_dup);
-is_deeply( \@tmp, [ 'symbol22_i386@Base' ], "missing arch specific is LOST, but optional arch specific isn't");
+@tmp = sort map { $_->{symbol}->get_symbolname() } $sym_file->get_lost_symbols($sym_file_dup);
+is_deeply(\@tmp, [ 'symbol22_i386@Base', 'symbol24_32@Base',
+ 'symbol26_little@Base', 'symbol28_little_32@Base' ],
+ "missing arch specific is LOST, but optional arch specific isn't");
# Tests for tagged #includes
$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.include-3", arch => 'i386');