Your message dated Tue, 28 Jan 2025 18:03:41 +0000
with message-id <e1tcpw5-003fxu...@fasolo.debian.org>
and subject line Bug#1002789: fixed in python-pycdlib 1.12.0+ds1-4+deb12u1
has caused the Debian Bug report #1002789,
regarding python-pycdlib: FTBFS during tests if /tmp is not a tmpfs
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1002789: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002789
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: python-pycdlib
Version: 1.12.0+ds1-3
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20211228 ftbfs-bookworm

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_USE_PY2=yes
> + PKGOS_USE_PY3=yes
> + PKGOS_IN_TMP=no
> + PKGOS_USE_PY2=no
> + shift
> + PKGOS_IN_TMP=yes
> + shift
> + dpkg-parsechangelog -SSource
> + SRC_PKG_NAME=python-pycdlib
> + echo python-pycdlib
> + sed s/python-//
> + PY_MODULE_NAME=pycdlib
> + [ no = yes ]
> + [ yes = yes ]
> + py3versions -vr
> + PYTHON3S=3.10 3.9
> + [ no = yes ]
> + [ yes = yes ]
> + [ yes = yes ]
> + TARGET_DIR=tmp
> + pwd
> + python3.10 setup.py install --install-layout=deb --root 
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34: 
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and 
> pip and other standards-based tools.
>   warnings.warn(
> running build
> running build_py
> creating build
> creating build/lib
> creating build/lib/pycdlib
> copying pycdlib/__init__.py -> build/lib/pycdlib
> copying pycdlib/dates.py -> build/lib/pycdlib
> copying pycdlib/backport_functools.py -> build/lib/pycdlib
> copying pycdlib/eltorito.py -> build/lib/pycdlib
> copying pycdlib/pycdlibexception.py -> build/lib/pycdlib
> copying pycdlib/udf.py -> build/lib/pycdlib
> copying pycdlib/rockridge.py -> build/lib/pycdlib
> copying pycdlib/pycdlib.py -> build/lib/pycdlib
> copying pycdlib/isohybrid.py -> build/lib/pycdlib
> copying pycdlib/headervd.py -> build/lib/pycdlib
> copying pycdlib/path_table_record.py -> build/lib/pycdlib
> copying pycdlib/facade.py -> build/lib/pycdlib
> copying pycdlib/dr.py -> build/lib/pycdlib
> copying pycdlib/inode.py -> build/lib/pycdlib
> copying pycdlib/pycdlibio.py -> build/lib/pycdlib
> copying pycdlib/utils.py -> build/lib/pycdlib
> running build_scripts
> creating build/scripts-3.10
> copying and adjusting tools/pycdlib-explorer -> build/scripts-3.10
> copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.10
> copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.10
> changing mode of build/scripts-3.10/pycdlib-explorer from 644 to 755
> changing mode of build/scripts-3.10/pycdlib-extract-files from 644 to 755
> changing mode of build/scripts-3.10/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/__init__.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/backport_functools.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/udf.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/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/headervd.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/facade.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
> copying build/lib/pycdlib/inode.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/utils.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py 
> to __init__.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to 
> dates.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py
>  to backport_functools.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py 
> to eltorito.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py
>  to pycdlibexception.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to 
> udf.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py
>  to rockridge.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py 
> to pycdlib.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py
>  to isohybrid.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py 
> to headervd.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py
>  to path_table_record.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py 
> to facade.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to 
> dr.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to 
> inode.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py
>  to pycdlibio.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to 
> utils.cpython-310.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.10/pycdlib-genisoimage -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> copying build/scripts-3.10/pycdlib-extract-files -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> copying build/scripts-3.10/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.9 setup.py install --install-layout=deb --root 
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34: 
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and 
> pip and other standards-based tools.
>   warnings.warn(
> running build
> running build_py
> running build_scripts
> creating build/scripts-3.9
> copying and adjusting tools/pycdlib-explorer -> build/scripts-3.9
> copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.9
> copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.9
> changing mode of build/scripts-3.9/pycdlib-explorer from 644 to 755
> changing mode of build/scripts-3.9/pycdlib-extract-files from 644 to 755
> changing mode of build/scripts-3.9/pycdlib-genisoimage from 644 to 755
> running install_lib
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py 
> to __init__.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to 
> dates.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py
>  to backport_functools.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py 
> to eltorito.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py
>  to pycdlibexception.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to 
> udf.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py
>  to rockridge.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py 
> to pycdlib.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py
>  to isohybrid.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py 
> to headervd.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py
>  to path_table_record.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py 
> to facade.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to 
> dr.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to 
> inode.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py
>  to pycdlibio.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to 
> utils.cpython-39.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
> + pwd
> + [ -d /<<PKGBUILDDIR>>/debian/python-pycdlib/usr/bin ]
> set -e ; set -x ; for pyvers in 3.10 3.9; do \
>       PATH=$PATH:/<<PKGBUILDDIR>>/debian/tmp/usr/bin 
> PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages 
> python$pyvers -m pytest tests ; \
> 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.10 -m pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.10.1, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collected 1721 items
> 
> 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%]
> ...................................F.s............F.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 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0')
> 
>     def test_hybrid_sevendeepdirs(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('sevendeepdirs')
>         outfile = str(indir)+'.iso'
>         numdirs = 8
>         x = indir
>         for i in range(1, 1+numdirs):
>             x = x.mkdir('dir%d' % i)
>         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:1622: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 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 0x7f9c86f94640>, 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 
> 0x7f9c87d34f90>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d34f90> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c876f1dd0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c876f1dd0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f140>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f140> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86f94640>.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-11/test_hybrid_sevendeepdirs0/sevendeepdirs
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/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 
> ____________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0')
> 
>     def test_parse_rr_deep_dir(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep_dir)
> 
> tests/integration/test_parse.py:706: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 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 0x7f9c87e23d40>, 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 
> 0x7f9c88267fb0>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c88267fb0> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b7b110>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b7b110> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c87e35c40>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c87e35c40> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c87e23d40>.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-11/test_parse_rr_deep_dir0/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/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 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0')
> 
>     def test_parse_rr_deep(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep)
> 
> tests/integration/test_parse.py:718: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2268: in check_rr_deep
>     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 0x7f9c86b14140>, 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 
> 0x7f9c87ce7e20>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87ce7e20> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b816f0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b816f0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f5a0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f5a0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b14140>.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-11/test_parse_rr_deep0/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   23   474 
>   24   322 rr_moved
>   25   332 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/.'
>       34       34 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/foo
> 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 = 35
> Total translation table size: 0
> Total rockridge attributes bytes: 2242
> Total directory bytes: 18906
> Path table size(bytes): 122
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 35 extents written (0 MB)
> _____________________________ test_parse_rr_deep2 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20')
> 
>     def test_parse_rr_deep2(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8').mkdir('dir9')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'dir9', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep2)
> 
> tests/integration/test_parse.py:730: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2281: in check_rr_deep2
>     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 0x7f9c86b14d40>, 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 
> 0x7f9c87015b20>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87015b20> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c879ce090>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c879ce090> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b3e030>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b3e030> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b14d40>.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-11/test_parse_rr_deep20/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
>   23   474 
>   24   322 rr_moved
>   25   330 dir8
>   26   320 dir9
>   27   318 dir1
>   28   318 dir2
>   29   318 dir3
>   30   318 dir4
>   31   318 dir5
>   32   318 dir6
>   33   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir9/.'
> Cache hit for 'dir9/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/foo
> 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)    11
> Writing:   Directory tree cleanup                  Start Block 34
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 34
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 35
> Total extents scheduled to be written = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2452
> Total directory bytes: 20954
> Path table size(bytes): 134
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 36 extents written (0 MB)
> __________________________ test_parse_rr_joliet_deep 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0')
> 
>     def test_parse_rr_joliet_deep(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrjolietdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-J', '-o', str(outfile), 
> str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_joliet_deep)
> 
> tests/integration/test_parse.py:923: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2776: in check_rr_joliet_deep
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=28, 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 0x7f9c87716840>, 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 
> 0x7f9c869d7c40>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c869d7c40> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86c092d0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86c092d0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b2f760>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b2f760> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c87716840>.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-11/test_parse_rr_joliet_deep0/rrjolietdeep
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   28   474 
>   29   322 rr_moved
>   30   216 dir8
>   31   318 dir1
>   32   318 dir2
>   33   318 dir3
>   34   318 dir4
>   35   318 dir5
>   36   318 dir6
>   37   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:   Joliet Volume Descriptor                Start Block 17
> Done with: Joliet Volume Descriptor                Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 18
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 19
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 20
> Done with: Path table                              Block(s)    4
> Writing:   Joliet path table                       Start Block 24
> Done with: Joliet path table                       Block(s)    4
> Writing:   Directory tree                          Start Block 28
> Done with: Directory tree                          Block(s)    10
> Writing:   Joliet directory tree                   Start Block 38
> Done with: Joliet directory tree                   Block(s)    9
> Writing:   Directory tree cleanup                  Start Block 47
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 47
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 48
> Total extents scheduled to be written = 48
> 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
> 48 extents written (0 MB)
> ______________________ test_parse_duplicate_rrmoved_name 
> _______________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0')
> 
>     def test_parse_duplicate_rrmoved_name(tmpdir):
>         iso = pycdlib.PyCdlib()
>         iso.new(rock_ridge='1.09')
>     
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('eltoritonofiles')
>         outfile = str(indir)+'.iso'
>         fdir = 
> indir.mkdir('A').mkdir('B').mkdir('C').mkdir('D').mkdir('E').mkdir('F')
>         fdir.mkdir('G').mkdir('1')
>         fdir.mkdir('H').mkdir('1')
>         with open(os.path.join(str(indir), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 
> '1', 'first'), 'wb') as outfp:
>             outfp.write(b'first\n')
>         with open(os.path.join(str(indir), 'A', 'B', 'C', 'D', 'E', 'F', 'H', 
> '1', 'second'), 'wb') as outfp:
>             outfp.write(b'second\n')
>     
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_two_dirs_same_level)
> 
> tests/integration/test_parse.py:2305: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:3567: in check_rr_two_dirs_same_level
>     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 0x7f9c86b9a340>, 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 
> 0x7f9c86aad260>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c86aad260> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c870292d0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c870292d0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86c04a50>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86c04a50> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b9a340>.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-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H/1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G/1
> Using 1000 for  ./rr_moved/1 (1)
>   23   468 
>   24   432 rr_moved
>   25   336 1
>   26   336 1
>   27   312 A
>   28   312 B
>   29   312 C
>   30   312 D
>   31   312 E
>   32   420 F
>   33   324 H
>   34   324 G
> Cache hit for '1/.'
>       36       36 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H/1/second
> Cache hit for '1/.'
>       37       37 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G/1/first
> Cache hit for 'A/.'
> Cache hit for 'A/..'
> Cache hit for 'B/.'
> Cache hit for 'B/..'
> Cache hit for 'C/.'
> Cache hit for 'C/..'
> Cache hit for 'D/.'
> Cache hit for 'D/..'
> Cache hit for 'E/.'
> Cache hit for 'E/..'
> Cache hit for 'F/.'
> Cache hit for 'F/..'
> Cache hit for 'H/.'
> Cache hit for 'H/..'
> Cache hit for 'G/.'
> Cache hit for 'G/..'
> 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)    12
> Writing:   Directory tree cleanup                  Start Block 35
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 35
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 36
> Total extents scheduled to be written = 38
> Total translation table size: 0
> Total rockridge attributes bytes: 2810
> Total directory bytes: 22996
> Path table size(bytes): 128
> Done with: The File(s)                             Block(s)    2
> Max brk space used 43000
> 38 extents written (0 MB)
> _______________________ test_parse_rr_deep_weird_layout 
> ________________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0')
> 
>     def test_parse_rr_deep_weird_layout(tmpdir):
>         indir = tmpdir.mkdir('rrdeepweird')
>         outfile = str(indir) + '.iso'
>         absimp = 
> indir.mkdir('astroid').mkdir('astroid').mkdir('tests').mkdir('testdata').mkdir('python3').mkdir('data').mkdir('absimp')
>         sidepackage = absimp.mkdir('sidepackage')
>         with open(os.path.join(str(absimp), 'string.py'), 'wb') as outfp:
>             outfp.write(b'from __future__ import absolute_import, 
> print_functino\nimport string\nprint(string)\n')
>         with open(os.path.join(str(sidepackage), '__init__.py'), 'wb') as 
> outfp:
>             outfp.write(b'"""a side package with nothing in it\n"""\n')
>     
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep_weird_layout)
> 
> tests/integration/test_parse.py:2495: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:3986: in check_rr_deep_weird_layout
>     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 0x7f9c871d2440>, 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 
> 0x7f9c882d4d10>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c882d4d10> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c87173480>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c87173480> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8724fbc0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8724fbc0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c871d2440>.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-11/test_parse_rr_deep_weird_layou0/rrdeepweird
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/sidepackage
>   23   480 
>   24   334 rr_moved
>   25   346 sidepackage
>   26   324 astroid
>   27   320 astroid
>   28   326 tests
>   29   324 testdata
>   30   318 python3
>   31   322 data
>   32   468 absimp
> Cache hit for 'sidepackage/.'
>       34       34 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/sidepackage/__init__.py
> Cache hit for 'astroid/.'
> Cache hit for 'astroid/..'
> Cache hit for 'astroid/.'
> Cache hit for 'astroid/..'
> Cache hit for 'tests/.'
> Cache hit for 'tests/..'
> Cache hit for 'testdata/.'
> Cache hit for 'testdata/..'
> Cache hit for 'python3/.'
> Cache hit for 'python3/..'
> Cache hit for 'data/.'
> Cache hit for 'data/..'
> Cache hit for 'absimp/.'
> Cache hit for 'absimp/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/string.py
> 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 = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2361
> Total directory bytes: 18912
> Path table size(bytes): 146
> Done with: The File(s)                             Block(s)    2
> Max brk space used 43000
> 36 extents written (0 MB)
> ________________________ test_parse_rr_hidden_relocated 
> ________________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0')
> 
>     def test_parse_rr_hidden_relocated(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8').mkdir('dir9')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'dir9', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-hide-rr-moved', '-o', 
> str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_relocated_hidden)
> 
> tests/integration/test_parse.py:2516: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:4098: in check_rr_relocated_hidden
>     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 0x7f9c86fe9040>, 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 
> 0x7f9c87d168e0>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d168e0> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b63060>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b63060> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c871e6ab0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c871e6ab0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86fe9040>.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-11/test_parse_rr_hidden_relocated0/rrdeep
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
>   23   476 
>   24   322 .rr_moved
>   25   330 dir8
>   26   320 dir9
>   27   318 dir1
>   28   318 dir2
>   29   318 dir3
>   30   318 dir4
>   31   318 dir5
>   32   318 dir6
>   33   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir9/.'
> Cache hit for 'dir9/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/foo
> 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)    11
> Writing:   Directory tree cleanup                  Start Block 34
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 34
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 35
> Total extents scheduled to be written = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2453
> Total directory bytes: 20956
> Path table size(bytes): 134
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 36 extents written (0 MB)
> =========================== short test summary info 
> ============================
> FAILED tests/integration/test_hybrid.py::test_hybrid_sevendeepdirs - assert 
> 2...
> FAILED tests/integration/test_parse.py::test_parse_rr_deep_dir - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_deep - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_deep2 - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_joliet_deep - assert 3 
> ...
> FAILED tests/integration/test_parse.py::test_parse_duplicate_rrmoved_name - 
> a...
> FAILED tests/integration/test_parse.py::test_parse_rr_deep_weird_layout - 
> ass...
> FAILED tests/integration/test_parse.py::test_parse_rr_hidden_relocated - 
> asse...
> ================== 8 failed, 1697 passed, 16 skipped in 9.23s 
> ==================
> make[1]: *** [debian/rules:19: override_dh_auto_install] Error 1


The full build log is available from:
http://qa-logs.debian.net/2021/12/28/python-pycdlib_1.12.0+ds1-3_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: python-pycdlib
Source-Version: 1.12.0+ds1-4+deb12u1
Done: Santiago Vila <sanv...@debian.org>

We believe that the bug you reported is fixed in the latest version of
python-pycdlib, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1002...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Santiago Vila <sanv...@debian.org> (supplier of updated python-pycdlib package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 30 Dec 2024 18:55:00 +0100
Source: python-pycdlib
Architecture: source
Version: 1.12.0+ds1-4+deb12u1
Distribution: bookworm
Urgency: medium
Maintainer: Debian OpenStack <team+openst...@tracker.debian.org>
Changed-By: Santiago Vila <sanv...@debian.org>
Closes: 1002789
Changes:
 python-pycdlib (1.12.0+ds1-4+deb12u1) bookworm; urgency=medium
 .
   * Non-maintainer upload.
   * Run tests only if /tmp is in tmpfs, because otherwise they are
     known to fail. (Closes: #1002789).
Checksums-Sha1:
 b1a00f39bf4c1ed76201cecb235ead23f5daeeeb 1835 
python-pycdlib_1.12.0+ds1-4+deb12u1.dsc
 49ef1621b3e23a35edb89f8b9aaa9bc27ade67d1 3840 
python-pycdlib_1.12.0+ds1-4+deb12u1.debian.tar.xz
 b5fc917966e32f614819bd3f457e2eb07370f1fd 6262 
python-pycdlib_1.12.0+ds1-4+deb12u1_source.buildinfo
Checksums-Sha256:
 5afb1a3c47b62a61103f78d806c7f3c818c85c2191a950b55b3a3bd59673c8e3 1835 
python-pycdlib_1.12.0+ds1-4+deb12u1.dsc
 d8bf9b6935028880d97059243a4d4dbfaab4df2b90896e67c4fe6eeea527545c 3840 
python-pycdlib_1.12.0+ds1-4+deb12u1.debian.tar.xz
 cab7bd06f02357058289f941d8d8606d065216c5a52927e9a48d03c0c183a60d 6262 
python-pycdlib_1.12.0+ds1-4+deb12u1_source.buildinfo
Files:
 abe148f646b079bd58dde7a4dec30ca2 1835 python optional 
python-pycdlib_1.12.0+ds1-4+deb12u1.dsc
 ba9fed2c9a8122c7e108a09cfab739cd 3840 python optional 
python-pycdlib_1.12.0+ds1-4+deb12u1.debian.tar.xz
 dda09d18202b86def71fa16d2cc3a0f1 6262 python optional 
python-pycdlib_1.12.0+ds1-4+deb12u1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEE1Uw7+v+wQt44LaXXQc5/C58bizIFAmeY5AMACgkQQc5/C58b
izIokgf+LXPo9Myqx9p4KHXVJMv5KwpynpBklZA4oE8pzI8Wn2+IzaPhBS5Uf1/J
OZNz8lM5/fb+AGXd6JUP4DpA4P+R6/Xd8LiH4Ds/hrkNkVtW5YStv37XZXfNIY1J
qqPD9GS6dLYiGVQtXDeww7erObIVDLB4JpCnoQGplcsSKJFAmELWPUbfTZv4PiEy
/2brRThsYp+yG1YP+ajOycpYndDhL8JGqiwUPxg3CATwiXUBoLw9KsPI1hOZI/KG
8Py/etPrvF5AcKw2DvxBo2+/ukUIKD4lwdb7fvVu3sQ2G1ZtVhw0M33znbFboU3u
mjKfPLTbhbd9iDJB7YfbTZFM/bHTgA==
=e/2I
-----END PGP SIGNATURE-----

Attachment: pgpH3syudDr4B.pgp
Description: PGP signature


--- End Message ---

Reply via email to