Test test_libmix_differences fails
I get the following error for test_libmix_differences
on openSUSE Tumbleweed:
[ 31s] ___________________________ test_libmix_differences ____________________________
[ 31s]
[ 31s] libmix_differences = [<Difference file list -- file list []>, <Difference Mach-O.o -- Mach-O.o []>, <Difference return42_or_3_long_name.o -...ection=.text {} -- objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} []>]>]
[ 31s]
[ 31s] @skip_unless_tools_exist("xxd")
[ 31s] @skip_unless_tools_exist("readelf", "objdump")
[ 31s] @skip_if_tool_version_is("readelf", readelf_version, "2.29")
[ 31s] @skip_if_binutils_does_not_support_x86()
[ 31s] def test_libmix_differences(libmix_differences):
[ 31s] assert len(libmix_differences) == 5
[ 31s] file_list, mach_o, x86_o, src_c, x_obj = libmix_differences
[ 31s]
[ 31s] # Check order and basic identification
[ 31s] assert file_list.source1 == "file list"
[ 31s] assert "Falling back to binary" in mach_o.comments[0]
[ 31s] x86_o = x86_o.details[0]
[ 31s] assert x86_o.source1.startswith("objdump ")
[ 31s] assert src_c.source1.endswith(".c")
[ 31s] x_obj = x_obj.details[0]
[ 31s] > assert x_obj.source1.startswith("readelf ")
[ 31s] E AssertionError: assert False
[ 31s] E + where False = <built-in method startswith of str object at 0x7f087427eb70>('readelf ')
[ 31s] E + where <built-in method startswith of str object at 0x7f087427eb70> = 'objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}'.startswith
[ 31s] E + where 'objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}' = <Difference objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} -- objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} []>.source1
[ 31s]
[ 31s] tests/comparators/test_elf.py:186: AssertionError
[ 31s] ------------------------------ Captured log setup ------------------------------
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "42-Mach-O.o" or "42-Mach-O.o" ([Errno 2] No such file or directory: '42-Mach-O.o')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "43-Mach-O.o" or "43-Mach-O.o" ([Errno 2] No such file or directory: '43-Mach-O.o')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "Mach-O.o" or "Mach-O.o" ([Errno 2] No such file or directory: 'Mach-O.o')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".text" or ".text" ([Errno 2] No such file or directory: '.text')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".data" or ".data" ([Errno 2] No such file or directory: '.data')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".bss" or ".bss" ([Errno 2] No such file or directory: '.bss')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".strtab" or ".strtab" ([Errno 2] No such file or directory: '.strtab')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".shstrtab" or ".shstrtab" ([Errno 2] No such file or directory: '.shstrtab')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.o" or "return42_or_3_long_name.o" ([Errno 2] No such file or directory: 'return42_or_3_long_name.o')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.c" or "return42_or_3_long_name.c" ([Errno 2] No such file or directory: 'return42_or_3_long_name.c')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "regen_elfmix.sh" or "regen_elfmix.sh" ([Errno 2] No such file or directory: 'regen_elfmix.sh')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".text" or ".text" ([Errno 2] No such file or directory: '.text')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".data" or ".data" ([Errno 2] No such file or directory: '.data')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".bss" or ".bss" ([Errno 2] No such file or directory: '.bss')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".xt.prop" or ".xt.prop" ([Errno 2] No such file or directory: '.xt.prop')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".strtab" or ".strtab" ([Errno 2] No such file or directory: '.strtab')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file ".shstrtab" or ".shstrtab" ([Errno 2] No such file or directory: '.shstrtab')
[ 31s] WARNING diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.obj" or "return42_or_3_long_name.obj" ([Errno 2] No such file or directory: 'return42_or_3_long_name.obj')
The content of the variable x_obj.source1
is:
objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}
wich starts with objdump
instead of readelf
.
I don't know where to start with debugging this, maybe it's a version compatibility issue. Both programs are installed in the build/test environment, version 2.36.0.20210204-1 each.