• Bug#1064775: python-pycdlib: FTBFS: failed tests (1/2)

    From Lucas Nussbaum@21:1/5 to All on Sun Feb 25 21:00:15 2024
    Source: python-pycdlib
    Version: 1.12.0+ds1-5
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20240224 ftbfs-trixie

    Hi,

    During a rebuild of all packages in sid, your package failed to build
    on amd64.


    Relevant part (hopefully):
    make[1]: Entering directory '/<<PKGBUILDDIR>>'
    make[1]: pyversions: No such file or directory
    py3versions: no X-Python3-Version in control file, using supported versions pkgos-dh_auto_install --no-py2 --in-tmp
    + PKGOS_IN_TMP=no
    + echo WARNING: --no-py2 is deprecated and always on.
    WARNING: --no-py2 is deprecated and always on.
    + shift
    + PKGOS_IN_TMP=yes
    + shift
    + dpkg-parsechangelog -SSource
    + SRC_PKG_NAME=python-pycdlib
    + + sed s/python-//
    echo python-pycdlib
    + PY_MODULE_NAME=pycdlib
    + py3versions -vr
    + PYTHON3S=3.12 3.11
    + [ yes = yes ]
    + TARGET_DIR=tmp
    + pwd
    + python3.12 setup.py install --install-layout=deb --root /<<PKGBUILDDIR>>/debian/tmp
    running install /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
    !!

    ********************************************************************************
    Please avoid running ``setup.py`` directly.
    Instead, use pypa/build, pypa/installer or other
    standards-based tools.

    See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
    ********************************************************************************

    !!
    self.initialize_options()
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/pycdlib
    copying pycdlib/utils.py -> build/lib/pycdlib
    copying pycdlib/__init__.py -> build/lib/pycdlib
    copying pycdlib/rockridge.py -> build/lib/pycdlib
    copying pycdlib/backport_functools.py -> build/lib/pycdlib
    copying pycdlib/path_table_record.py -> build/lib/pycdlib
    copying pycdlib/eltorito.py -> build/lib/pycdlib
    copying pycdlib/pycdlibexception.py -> build/lib/pycdlib
    copying pycdlib/inode.py -> build/lib/pycdlib
    copying pycdlib/dates.py -> build/lib/pycdlib
    copying pycdlib/pycdlib.py -> build/lib/pycdlib
    copying pycdlib/isohybrid.py -> build/lib/pycdlib
    copying pycdlib/udf.py -> build/lib/pycdlib
    copying pycdlib/facade.py -> build/lib/pycdlib
    copying pycdlib/pycdlibio.py -> build/lib/pycdlib
    copying pycdlib/headervd.py -> build/lib/pycdlib
    copying pycdlib/dr.py -> build/lib/pycdlib
    running build_scripts
    creating build/scripts-3.12
    copying and adjusting tools/pycdlib-explorer -> build/scripts-3.12
    copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.12 copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.12 changing mode of build/scripts-3.12/pycdlib-explorer from 644 to 755
    changing mode of build/scripts-3.12/pycdlib-extract-files from 644 to 755 changing mode of build/scripts-3.12/pycdlib-genisoimage from 644 to 755 running install_lib
    creating /<<PKGBUILDDIR>>/debian/tmp
    creating /<<PKGBUILDDIR>>/debian/tmp/usr
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib copying build/lib/pycdlib/utils.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/__init__.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/rockridge.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/backport_functools.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/path_table_record.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/eltorito.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/pycdlibexception.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/inode.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/dates.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/pycdlib.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/isohybrid.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/udf.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/facade.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/pycdlibio.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/headervd.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    copying build/lib/pycdlib/dr.py -> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to utils.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py to __init__.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py to rockridge.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py to backport_functools.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py to path_table_record.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py to eltorito.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py to pycdlibexception.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to inode.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to dates.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py to pycdlib.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py to isohybrid.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to udf.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py to facade.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py to pycdlibio.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py to headervd.cpython-312.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to dr.cpython-312.pyc
    running install_data
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/share
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/share/man
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
    copying man/pycdlib-explorer.1 -> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
    copying man/pycdlib-extract-files.1 -> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
    copying man/pycdlib-genisoimage.1 -> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
    running install_egg_info
    running egg_info
    creating pycdlib.egg-info
    writing pycdlib.egg-info/PKG-INFO
    writing dependency_links to pycdlib.egg-info/dependency_links.txt
    writing top-level names to pycdlib.egg-info/top_level.txt
    writing manifest file 'pycdlib.egg-info/SOURCES.txt'
    reading manifest file 'pycdlib.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'COPYING'
    writing manifest file 'pycdlib.egg-info/SOURCES.txt'
    Copying pycdlib.egg-info to /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info
    Skipping SOURCES.txt
    running install_scripts
    creating /<<PKGBUILDDIR>>/debian/tmp/usr/bin
    copying build/scripts-3.12/pycdlib-genisoimage -> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
    copying build/scripts-3.12/pycdlib-extract-files -> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
    copying build/scripts-3.12/pycdlib-explorer -> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-genisoimage to 755
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-extract-files to 755
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-explorer to 755 + pwd
    + python3.11 setup.py install --install-layout=deb --root /<<PKGBUILDDIR>>/debian/tmp
    running install /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
    !!

    ********************************************************************************
    Please avoid running ``setup.py`` directly.
    Instead, use pypa/build, pypa/installer or other
    standards-based tools.

    See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
    ********************************************************************************

    !!
    self.initialize_options()
    running build
    running build_py
    running build_scripts
    creating build/scripts-3.11
    copying and adjusting tools/pycdlib-explorer -> build/scripts-3.11
    copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.11 copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.11 changing mode of build/scripts-3.11/pycdlib-explorer from 644 to 755
    changing mode of build/scripts-3.11/pycdlib-extract-files from 644 to 755 changing mode of build/scripts-3.11/pycdlib-genisoimage from 644 to 755 running install_lib
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to utils.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py to __init__.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py to rockridge.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py to backport_functools.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py to path_table_record.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py to eltorito.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py to pycdlibexception.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to inode.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to dates.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py to pycdlib.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py to isohybrid.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to udf.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py to facade.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py to pycdlibio.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py to headervd.cpython-311.pyc
    byte-compiling /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to dr.cpython-311.pyc
    running install_data
    running install_egg_info
    running egg_info
    writing pycdlib.egg-info/PKG-INFO
    writing dependency_links to pycdlib.egg-info/dependency_links.txt
    writing top-level names to pycdlib.egg-info/top_level.txt
    reading manifest file 'pycdlib.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'COPYING'
    writing manifest file 'pycdlib.egg-info/SOURCES.txt'
    removing '/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info' (and everything under it)
    Copying pycdlib.egg-info to /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info
    Skipping SOURCES.txt
    running install_scripts
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-genisoimage to 755
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-extract-files to 755
    changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-explorer to 755 + pwd
    + rm -rf /<<PKGBUILDDIR>>/debian/python*/usr/lib/python*/dist-packages/*.pth + pwd
    + rm -rf /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python*/dist-packages/*.pth
    set -e ; set -x ; for pyvers in 3.12 3.11; do \
    PATH=$PATH:/<<PKGBUILDDIR>>/debian/tmp/usr/bin PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages python$pyvers -m pytest tests -k 'not test_volumedescdate_new_nonzero and not test_gmtoffset_from_tm'; \
    done
    + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/<<PKGBUILDDIR>>/debian/tmp/usr/bin PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages python3.12 -m pytest tests -k not test_volumedescdate_new_nonzero
    and not test_gmtoffset_from_tm
    ============================= test session starts ==============================
    platform linux -- Python 3.12.2, pytest-7.4.4, pluggy-1.4.0
    rootdir: /<<PKGBUILDDIR>>
    configfile: pytest.ini
    collected 1721 items / 3 deselected / 1718 selected

    tests/integration/test_facade.py ....................................... [ 2%]
    .................. [ 3%]
    tests/integration/test_hybrid.py ....................................... [ 5%]
    ....................s..............F.................................... [ 9%]
    .........s..................... [ 11%]
    tests/integration/test_new.py .......................................... [ 14%]
    ........................................................................ [ 18%]
    ........................................................................ [ 22%]
    ........................................................................ [ 26%]
    ......................................................ssss.............. [ 30%]
    ........................................................................ [ 34%]
    ..................................................................s [ 38%]
    tests/integration/test_parse.py ........................................ [ 41%]
    ....sss...FFF................F.......................................... [ 45%]
    .....................................s..............F................... [ 49%]
    ......s................. [ 50%]
    tests/tools/test_pycdlib_genisoimage.py .ssss. [ 51%]
    tests/unit/test_dates.py ........................ [ 52%]
    tests/unit/test_dr.py ......................................... [ 55%]
    tests/unit/test_eltorito.py ............................... [ 56%]
    tests/unit/test_headervd.py ............................................ [ 59%]
    ....... [ 59%]
    tests/unit/test_inode.py ....... [ 60%]
    tests/unit/test_isohybrid.py ........................................... [ 62%]
    [ 62%]
    tests/unit/test_ptr.py ........ [ 63%]
    tests/unit/test_rockridge.py ........................................... [ 65%]
    ........................................................................ [ 69%]
    ........................................................................ [ 74%]
    ..................................................... [ 77%]
    tests/unit/test_udf.py ................................................. [ 80%]
    ........................................................................ [ 84%]
    ........................................................................ [ 88%]
    ........................................................................ [ 92%]
    ........................................................................ [ 96%]
    ................ [ 97%]
    tests/unit/test_utils.py ...................................... [100%]

    =================================== FAILURES ===================================
    __________________________ test_hybrid_sevendeepdirs ___________________________

    tmp_path = PosixPath('/tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0')

    def test_hybrid_sevendeepdirs(tmp_path):
    # First set things up, and generate the ISO with genisoimage.
    indir = tmp_path / 'sevendeepdirs'
    indir.mkdir()
    outfile = str(indir)+'.iso'
    numdirs = 8
    x = indir
    for i in range(1, 1+numdirs):
    x = x / ('dir%d' % i)
    x.mkdir(parents=True)
    subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', '-no-pad',
    '-rational-rock', '-o', str(outfile), str(indir)])

    # Now open up the ISO with pycdlib and check some things out.
    iso = pycdlib.PyCdlib()

    iso.open(str(outfile))

    iso.rm_directory('/DIR1/DIR2/DIR3/DIR4/DIR5/DIR6/DIR7/DIR8', rr_name='dir8')

    do_a_test(iso, check_sevendeepdirs)

    tests/integration/test_hybrid.py:1722:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    tests/integration/test_hybrid.py:21: in do_a_test
    check_func(iso, len(out.getvalue())) tests/integration/test_common.py:2340: in check_sevendeepdirs
    internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=3, data_length=2048, extent_location=23, rr=True, rr_nlinks=3, xa=False, rr_onetwelve=False)
    tests/integration/test_common.py:289: in internal_check_root_dir_record
    internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f98a2a99e40>, rr = True
    rr_nlinks = 3, xa = False, rr_onetwelve = False

    def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, rr_onetwelve):
    # The file identifier for the 'dotdot' directory entry should be the byte 1.
    assert(dotdot_record.file_ident == b'\x01')
    # The 'dotdot' directory entry should be a directory.
    assert(dotdot_record.isdir == True)
    # The 'dotdot' directory record length should be exactly 34 with no extensions.
    if rr:
    if rr_onetwelve:
    expected_dr_len = 104
    else:
    expected_dr_len = 102
    else:
    expected_dr_len = 34

    if xa:
    expected_dr_len += 14

    assert(dotdot_record.dr_len == expected_dr_len)
    # The 'dotdot' directory record is not the root.
    assert(dotdot_record.is_root == False)
    # The 'dotdot' directory record should have no children.
    assert(len(dotdot_record.children) == 0)
    assert(dotdot_record.file_flags == 2)

    if rr:
    assert(dotdot_record.rock_ridge._initialized == True)
    assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
    if not rr_onetwelve:
    assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
    assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags == 0x81)
    assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
    assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
    assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 0o040555)
    assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == rr_nlinks)
    E assert 2 == 3
    E + where 2 = <pycdlib.rockridge.RRPXRecord object at 0x7f98a468a7a0>.posix_file_links
    E + where <pycdlib.rockridge.RRPXRecord object at 0x7f98a468a7a0> = <pycdlib.rockridge.RockRidgeEntries object at 0x7f98a3c03740>.px_record
    E + where <pycdlib.rockridge.RockRidgeEntries object at 0x7f98a3c03740> = <pycdlib.rockridge.RockRidge object at 0x7f98a4694740>.dr_entries
    E + where <pycdlib.rockridge.RockRidge object at 0x7f98a4694740> = <pycdlib.dr.DirectoryRecord object at 0x7f98a2a99e40>.rock_ridge

    tests/integration/test_common.py:416: AssertionError ----------------------------- Captured stderr call -----------------------------
    I: -input-charset not specified, using utf-8 (detected in locale settings) genisoimage 1.1.11 (Linux)
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6/dir7
    Scanning /tmp/pytest-of-user42/pytest-31/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
    23 474
    24 322 rr_moved
    25 216 dir8
    26 318 dir1
    27 318 dir2
    28 318 dir3
    29 318 dir4
    30 318 dir5
    31 318 dir6
    32 330 dir7
    Cache hit for 'dir8/.'
    Cache hit for 'dir1/.'
    Cache hit for 'dir1/..'
    Cache hit for 'dir2/.'
    Cache hit for 'dir2/..'
    Cache hit for 'dir3/.'
    Cache hit for 'dir3/..'
    Cache hit for 'dir4/.'
    Cache hit for 'dir4/..'
    Cache hit for 'dir5/.'
    Cache hit for 'dir5/..'
    Cache hit for 'dir6/.'
    Cache hit for 'dir6/..'
    Cache hit for 'dir7/.'
    Cache hit for 'dir7/..'
    Writing: Initial Padblock Start Block 0
    Done with: Initial Padblock Block(s) 16
    Writing: Primary Volume Descriptor Start Block 16
    Done with: Primary Volume Descriptor Block(s) 1
    Writing: End Volume Descriptor Start Block 17
    Done with: End Volume Descriptor Block(s) 1
    Writing: Version block Start Block 18
    Done with: Version block Block(s) 1
    Writing: Path table Start Block 19
    Done with: Path table Block(s) 4
    Writing: Directory tree Start Block 23
    Done with: Directory tree Block(s) 10
    Writing: Directory tree cleanup Start Block 33
    Done with: Directory tree cleanup Block(s) 0
    Writing: Extension record Start Block 33
    Done with: Extension record Block(s) 1
    Writing: The File(s) Start Block 34
    Total extents scheduled to be written = 34
    Total translation table size: 0
    Total rockridge attributes bytes: 2167
    Total directory bytes: 18906
    Path table size(bytes): 122
    Done with: The File(s) Block(s) 0
    Max brk space used 43000
    34 extents written (0 MB)
    ____________________________ test_parse_rr_deep_dir ____________________________

    tmp_path = PosixPath('/tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0')

    def test_parse_rr_deep_dir(tmp_path):
    # First set things up, and generate the ISO with genisoimage.
    indir = tmp_path / 'rrdeep'
    indir.mkdir()
    outfile = str(indir)+'.iso'
    newdir = indir / 'dir1' / 'dir2' / 'dir3' / 'dir4' / 'dir5' / 'dir6' / 'dir7' / 'dir8'
    newdir.mkdir(parents=True)
    subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', '-no-pad',
    '-rational-rock', '-o', str(outfile), str(indir)])

    do_a_test(tmp_path, outfile, check_rr_deep_dir)

    tests/integration/test_parse.py:780:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    tests/integration/test_parse.py:21: in do_a_test
    check_func(iso, os.stat(str(outfile)).st_size) tests/integration/test_common.py:2257: in check_rr_deep_dir
    internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, rr_onetwelve=False)
    tests/integration/test_common.py:289: in internal_check_root_dir_record
    internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f98a45f4440>, rr = True
    rr_nlinks = 4, xa = False, rr_onetwelve = False

    def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, rr_onetwelve):
    # The file identifier for the 'dotdot' directory entry should be the byte 1.
    assert(dotdot_record.file_ident == b'\x01')
    # The 'dotdot' directory entry should be a directory.
    assert(dotdot_record.isdir == True)
    # The 'dotdot' directory record length should be exactly 34 with no extensions.
    if rr:
    if rr_onetwelve:
    expected_dr_len = 104
    else:
    expected_dr_len = 102
    else:
    expected_dr_len = 34

    if xa:
    expected_dr_len += 14

    assert(dotdot_record.dr_len == expected_dr_len)
    # The 'dotdot' directory record is not the root.
    assert(dotdot_record.is_root == False)
    # The 'dotdot' directory record should have no children.
    assert(len(dotdot_record.children) == 0)
    assert(dotdot_record.file_flags == 2)

    if rr:
    assert(dotdot_record.rock_ridge._initialized == True)
    assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
    if not rr_onetwelve:
    assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
    assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags == 0x81)
    assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
    assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
    assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 0o040555)
    assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == rr_nlinks)
    E assert 3 == 4
    E + where 3 = <pycdlib.rockridge.RRPXRecord object at 0x7f98a468b3d0>.posix_file_links
    E + where <pycdlib.rockridge.RRPXRecord object at 0x7f98a468b3d0> = <pycdlib.rockridge.RockRidgeEntries object at 0x7f98a3c03060>.px_record
    E + where <pycdlib.rockridge.RockRidgeEntries object at 0x7f98a3c03060> = <pycdlib.rockridge.RockRidge object at 0x7f98a4603840>.dr_entries
    E + where <pycdlib.rockridge.RockRidge object at 0x7f98a4603840> = <pycdlib.dr.DirectoryRecord object at 0x7f98a45f4440>.rock_ridge

    tests/integration/test_common.py:416: AssertionError ----------------------------- Captured stderr call -----------------------------
    I: -input-charset not specified, using utf-8 (detected in locale settings) genisoimage 1.1.11 (Linux)
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1 Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
    Scanning /tmp/pytest-of-user42/pytest-31/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
    23 474
    24 322 rr_moved
    25 216 dir8
    26 318 dir1
    27 318 dir2
    28 318 dir3
    29 318 dir4
    30 318 dir5
    31 318 dir6
    32 330 dir7
    Cache hit for 'dir8/.'
    Cache hit for 'dir1/.'
    Cache hit for 'dir1/..'
    Cache hit for 'dir2/.'
    Cache hit for 'dir2/..'
    Cache hit for 'dir3/.'
    Cache hit for 'dir3/..'
    Cache hit for 'dir4/.'
    Cache hit for 'dir4/..'
    Cache hit for 'dir5/.'
    Cache hit for 'dir5/..'
    Cache hit for 'dir6/.'
    Cache hit for 'dir6/..'
    Cache hit for 'dir7/.'
    Cache hit for 'dir7/..'
    Writing: Initial Padblock Start Block 0
    Done with: Initial Padblock Block(s) 16
    Writing: Primary Volume Descriptor Start Block 16
    Done with: Primary Volume Descriptor Block(s) 1
    Writing: End Volume Descriptor Start Block 17
    Done with: End Volume Descriptor Block(s) 1
    Writing: Version block Start Block 18
    Done with: Version block Block(s) 1
    Writing: Path table Start Block 19
    Done with: Path table Block(s) 4
    Writing: Directory tree Start Block 23
    Done with: Directory tree Block(s) 10
    Writing: Directory tree cleanup Start Block 33
    Done with: Directory tree cleanup Block(s) 0
    Writing: Extension record Start Block 33
    Done with: Extension record Block(s) 1
    Writing: The File(s) Start Block 34
    Total extents scheduled to be written = 34
    Total translation table size: 0
    Total rockridge attributes bytes: 2167
    Total directory bytes: 18906
    Path table size(bytes): 122
    Done with: The File(s) Block(s) 0
    Max brk space used 43000
    34 extents written (0 MB)
    ______________________________ test_parse_rr_deep ______________________________

    tmp_path = PosixPath('/tmp/pytest-of-user42/pytest-31/test_parse_rr_deep0')

    def test_parse_rr_deep(tmp_path):
    # First set things up, and generate the ISO with genisoimage.
    indir = tmp_path / 'rrdeep'
    indir.mkdir()
    outfile = str(indir)+'.iso'
    newdir = indir / 'dir1' / 'dir2' / 'dir3' / 'dir4' / 'dir5' / 'dir6' / 'dir7' / 'dir8'
    newdir.mkdir(parents=True)

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)