diff options
Diffstat (limited to 'scripts/t/Dpkg_Shlibs.t')
-rw-r--r-- | scripts/t/Dpkg_Shlibs.t | 55 |
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'); |