This is an automated email from the git hooks/post-receive script.

guillem pushed a commit to branch main
in repository dpkg.

View the commit online:
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=322ecd6cdd6fdc7c865069bbfef3297751e02763

commit 322ecd6cdd6fdc7c865069bbfef3297751e02763
Author: Guillem Jover <[email protected]>
AuthorDate: Sun Jul 28 16:13:38 2024 +0200

    test: Refactor load_objdump_obj()
    
    We are doing the same thing over and over. Refactor into a single
    function.
---
 scripts/t/Dpkg_Shlibs.t | 86 ++++++++++++++-----------------------------------
 1 file changed, 24 insertions(+), 62 deletions(-)

diff --git a/scripts/t/Dpkg_Shlibs.t b/scripts/t/Dpkg_Shlibs.t
index 128e02633..3430d5426 100644
--- a/scripts/t/Dpkg_Shlibs.t
+++ b/scripts/t/Dpkg_Shlibs.t
@@ -40,6 +40,17 @@ my %tmp;
 
 my $datadir = test_get_data_path();
 
+sub load_objdump_obj {
+    my $name = shift;
+
+    my $obj = Dpkg::Shlibs::Objdump::Object->new();
+    open my $objdump, '<', "$datadir/objdump.$name"
+        or die "$datadir/objdump.$name: $!";
+    $obj->parse_objdump_output($objdump);
+    close $objdump;
+    return $obj;
+}
+
 my @librarypaths;
 
 {
@@ -77,20 +88,13 @@ is_deeply(\@librarypaths, [ qw(
 
 use_ok('Dpkg::Shlibs::Objdump');
 
-my $obj = Dpkg::Shlibs::Objdump::Object->new;
+my $obj;
 
-open my $objdump, '<', "$datadir/objdump.dbd-pg"
-  or die "$datadir/objdump.dbd-pg: $!";
-$obj->parse_objdump_output($objdump);
-close $objdump;
+$obj = load_objdump_obj('dbd-pg');
 ok(!$obj->is_public_library(), 'Pg.so is not a public library');
 ok(!$obj->is_executable(), 'Pg.so is not an executable');
 
-open $objdump, '<', "$datadir/objdump.ls"
-  or die "$datadir/objdump.ls: $!";
-$obj->reset();
-$obj->parse_objdump_output($objdump);
-close $objdump;
+$obj = load_objdump_obj('ls');
 ok(!$obj->is_public_library(), 'ls is not a public library');
 ok($obj->is_executable(), 'ls is an executable');
 
@@ -98,22 +102,12 @@ my $sym = $obj->get_symbol('optarg@GLIBC_2.0');
 ok($sym, 'optarg@GLIBC_2.0 exists');
 ok(!$sym->{defined}, 'R_*_COPY relocations are taken into account');
 
-open $objdump, '<', "$datadir/objdump.space"
-  or die "$datadir/objdump.space: $!";
-$obj->reset();
-$obj->parse_objdump_output($objdump);
-close $objdump;
-
 # Non-regression test for #506139
+$obj = load_objdump_obj('space');
 $sym = $obj->get_symbol('singlespace');
 ok($sym, 'version less symbol separated by a single space are correctly 
parsed');
 
-open $objdump, '<', "$datadir/objdump.libc6-2.6"
-  or die "$datadir/objdump.libc6-2.6: $!";
-$obj->reset();
-$obj->parse_objdump_output($objdump);
-close $objdump;
-
+$obj = load_objdump_obj('libc6-2.6');
 ok($obj->is_public_library(), 'libc6 is a public library');
 ok($obj->is_executable(), 'libc6 is an executable');
 
@@ -168,14 +162,6 @@ is(scalar @syms, 2231, 'defined && dynamic');
 is(scalar @syms, 9, 'undefined && dynamic');
 
 
-my $obj_old = Dpkg::Shlibs::Objdump::Object->new;
-
-open $objdump, '<', "$datadir/objdump.libc6-2.3"
-  or die "$datadir/objdump.libc6-2.3: $!";
-$obj_old->parse_objdump_output($objdump);
-close $objdump;
-
-
 use_ok('Dpkg::Shlibs::SymbolFile');
 use_ok('Dpkg::Shlibs::Symbol');
 
@@ -183,6 +169,8 @@ my $sym_file = Dpkg::Shlibs::SymbolFile->new(file => 
"$datadir/symbol_file.tmp")
 my $sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => 
"$datadir/symbol_file.tmp");
 my $sym_file_old = Dpkg::Shlibs::SymbolFile->new(file => 
"$datadir/symbol_file.tmp");
 
+my $obj_old = load_objdump_obj('libc6-2.3');
+
 $sym_file->merge_symbols($obj_old, '2.3.6.ds1-13');
 $sym_file_old->merge_symbols($obj_old, '2.3.6.ds1-13');
 
@@ -253,11 +241,7 @@ save_load_test($sym_file, 'save -> load');
 
 
 # Test ignoring internal symbols
-open $objdump, '<', "$datadir/objdump.internal"
-    or die "objdump.internal: $!";
-$obj->reset();
-$obj->parse_objdump_output($objdump);
-close $objdump;
+$obj = load_objdump_obj('internal');
 
 # Do not ignore any internal symbols
 $sym_file = Dpkg::Shlibs::SymbolFile->new(file => 
"$datadir/symbols.internal-filter");
@@ -457,12 +441,7 @@ is($io_data,
 
 # Check parsing of objdump output on ia64 (local symbols
 # without versions and with visibility attribute)
-$obj = Dpkg::Shlibs::Objdump::Object->new;
-
-open $objdump, '<', "$datadir/objdump.glib-ia64"
-  or die "$datadir/objdump.glib-ia64: $!";
-$obj->parse_objdump_output($objdump);
-close $objdump;
+$obj = load_objdump_obj('glib-ia64');
 ok($obj->is_public_library(), 'glib-ia64 is a public library');
 ok(!$obj->is_executable(), 'glib-ia64 is not an executable');
 
@@ -485,12 +464,7 @@ is_deeply($sym, {
     'symbol with visibility without version');
 
 # Check parsing of objdump output when symbol names contain spaces
-$obj = Dpkg::Shlibs::Objdump::Object->new;
-
-open $objdump, '<', "$datadir/objdump.spacesyms"
-    or die "$datadir/objdump.spacesyms: $!";
-$obj->parse_objdump_output($objdump);
-close $objdump;
+$obj = load_objdump_obj('spacesyms');
 
 sub check_spacesym {
     my ($name, $version, $visibility) = @_;
@@ -590,19 +564,11 @@ ok(defined 
$sym_file->{objects}{'libbasictags.so.1'}{syms}{'symbol21_amd64@Base'
     'syms keys are symbol names without quotes');
 
 # Preload objdumps
-my $tags_obj_i386 = Dpkg::Shlibs::Objdump::Object->new();
-open $objdump, '<', "$datadir/objdump.basictags-i386"
-    or die "$datadir/objdump.basictags-i386: $!";
-$tags_obj_i386->parse_objdump_output($objdump);
-close $objdump;
+my $tags_obj_i386 = load_objdump_obj('basictags-i386');
 $sym_file->merge_symbols($tags_obj_i386, '100.MISSING');
 is_deeply($sym_file, $sym_file_dup, 'is objdump.basictags-i386 and 
basictags.symbols in sync');
 
-my $tags_obj_amd64 = Dpkg::Shlibs::Objdump::Object->new();
-open $objdump, '<', "$datadir/objdump.basictags-amd64"
-    or die "$datadir/objdump.basictags-amd64: $!";
-$tags_obj_amd64->parse_objdump_output($objdump);
-close $objdump;
+my $tags_obj_amd64 = load_objdump_obj('basictags-amd64');
 
 # Merge/get_{new,lost} tests for optional tag:
 #  - disappeared
@@ -827,11 +793,7 @@ SKIP: {
 skip 'c++filt not available', 41 if not can_run('c++filt');
 
 sub load_patterns_obj {
-    $obj = Dpkg::Shlibs::Objdump::Object->new();
-    open $objdump, '<', "$datadir/objdump.patterns"
-       or die "$datadir/objdump.patterns: $!";
-    $obj->parse_objdump_output($objdump);
-    close $objdump;
+    $obj = load_objdump_obj('patterns');
     return $obj;
 }
 

-- 
Dpkg.Org's dpkg

Reply via email to