shutil.rmtree() fails when used in Fedora (rpm) "mock" environment

Liste des GroupesRevenir à cl python 
Sujet : shutil.rmtree() fails when used in Fedora (rpm) "mock" environment
De : c.buhtz (at) *nospam* posteo.jp
Groupes : comp.lang.python
Date : 24. Oct 2024, 09:33:04
Autres entêtes
Message-ID : <mailman.32.1729778643.4695.python-list@python.org>
References : 1
Hello,
I am upstream maintainer of "Back In Time" [1] investigating an issue a distro maintainer from Fedora reported [2] to me.
On one hand Fedora seems to use a tool called "mock" to build packages in a chroot environment.
On the other hand the test suite of "Back In Time" does read and write to the real file system.
One test fails because a temporary directory is cleaned up using shutil.rmtree(). Please see the output below.
I am not familiar with Fedora and "mock". So I am not able to reproduce this on my own.
It seems the Fedora maintainer also has no clue how to solve it or why it happens.
Can you please have a look (especially at the line "assert func is os.lstat").
Maybe you have an idea what is the intention behind this error raised by an "assert" statement inside "shutil.rmtree()".
Thanks in advance,
Christian Buhtz
[1] -- <https://github.com/bit-team/backintime>
[2] -- <https://github.com/bit-team/backintime/issues/1911>
__________________________ General.test_ctor_defaults __________________________
self = <test.test_uniquenessset.General testMethod=test_ctor_defaults>
     def test_ctor_defaults(self):
         """Default values in constructor."""
      with TemporaryDirectory(prefix='bit.') as temp_name:
test/test_uniquenessset.py:47:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.13/tempfile.py:946: in __exit__
     self.cleanup()
/usr/lib64/python3.13/tempfile.py:950: in cleanup
     self._rmtree(self.name, ignore_errors=self._ignore_cleanup_errors)
/usr/lib64/python3.13/tempfile.py:930: in _rmtree
     _shutil.rmtree(name, onexc=onexc)
/usr/lib64/python3.13/shutil.py:763: in rmtree
     _rmtree_safe_fd(stack, onexc)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
stack = []
onexc = <function TemporaryDirectory._rmtree.<locals>.onexc at 0xffffb39bc860>
     def _rmtree_safe_fd(stack, onexc):
         # Each stack item has four elements:
         # * func: The first operation to perform: os.lstat, os.close or os.rmdir.
         #   Walking a directory starts with an os.lstat() to detect symlinks; in
         #   this case, func is updated before subsequent operations and passed to
         #   onexc() if an error occurs.
         # * dirfd: Open file descriptor, or None if we're processing the top-level
         #   directory given to rmtree() and the user didn't supply dir_fd.
         # * path: Path of file to operate upon. This is passed to onexc() if an
         #   error occurs.
         # * orig_entry: os.DirEntry, or None if we're processing the top-level
         #   directory given to rmtree(). We used the cached stat() of the entry to
         #   save a call to os.lstat() when walking subdirectories.
         func, dirfd, path, orig_entry = stack.pop()
         name = path if orig_entry is None else orig_entry.name
         try:
             if func is os.close:
                 os.close(dirfd)
                 return
             if func is os.rmdir:
                 os.rmdir(name, dir_fd=dirfd)
                 return
             # Note: To guard against symlink races, we use the standard
             # lstat()/open()/fstat() trick.
          assert func is os.lstat
E           AssertionError
/usr/lib64/python3.13/shutil.py:663: AssertionError

Date Sujet#  Auteur
24 Oct 24 * shutil.rmtree() fails when used in Fedora (rpm) "mock" environment2c.buhtz
24 Oct 24 `- Re: shutil.rmtree() fails when used in Fedora (rpm) "mock" environment1Stefan Ram

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal