Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AutoImportTest.test_skipping_directories_not_accessible_because_of_permission_error test fails with Python 3.13.0b2 #792

Open
arkamar opened this issue Jun 24, 2024 · 1 comment
Labels
bug Unexpected or incorrect user-visible behavior

Comments

@arkamar
Copy link

arkamar commented Jun 24, 2024

I tried to test rope 1.13.0 with Python 3.13.0b2 and one test fail. Here is the log output just for this test:

================================================= test session starts =================================================                                                                                                                [92/621]
platform linux -- Python 3.13.0b2, pytest-8.2.2, pluggy-1.5.0 -- /var/tmp/portage/dev-python/rope-1.13.0/work/rope-1.13.0-python3_13/install/usr/bin/python3.13
cachedir: .pytest_cache
rootdir: /var/tmp/portage/dev-python/rope-1.13.0/work/rope-1.13.0
configfile: pyproject.toml
plugins: timeout-2.3.1
collecting ... collected 1 item

ropetest/contrib/autoimporttest.py::AutoImportTest::test_skipping_directories_not_accessible_because_of_permission_error FAILED [1/1]

====================================================== FAILURES =======================================================
_________________ AutoImportTest.test_skipping_directories_not_accessible_because_of_permission_error _________________

self = <ropetest.contrib.autoimporttest.AutoImportTest testMethod=test_skipping_directories_not_accessible_because_of_permission_error>

    def test_skipping_directories_not_accessible_because_of_permission_error(self):
        # The single thread test takes much longer than the multithread test but is easier to debug
        single_thread = False
        self.importer.generate_modules_cache(single_thread=single_thread)

        # Create a temporary directory and set permissions to 000
        import sys
        import tempfile
        with tempfile.TemporaryDirectory() as dir:
            import os
            os.chmod(dir, 0o000)
            self.importer.project.prefs.python_path = [dir]
>           self.importer.generate_modules_cache(single_thread=single_thread)

dir        = '/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_'
os         = <module 'os' (frozen)>
self       = <ropetest.contrib.autoimporttest.AutoImportTest testMethod=test_skipping_directories_not_accessible_because_of_permission_error>
single_thread = False
sys        = <module 'sys' (built-in)>
tempfile   = <module 'tempfile' from '/usr/lib/python3.13/tempfile.py'>

ropetest/contrib/autoimporttest.py:175:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rope/contrib/autoimport/sqlite.py:422: in generate_modules_cache
    self._get_available_packages()
        modules    = None
        self       = <rope.contrib.autoimport.sqlite.AutoImport object at 0x7fd1a12fd7f0>
        single_thread = False
        task_handle = <rope.base.taskhandle.NullTaskHandle object at 0x7fd1a1d19e80>
        underlined = False
rope/contrib/autoimport/sqlite.py:587: in _get_available_packages
    for package in self._safe_iterdir(folder):
        folder     = PosixPath('/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_')
        packages   = [Package(name='_abc', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_ast', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_codecs', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_collections', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_functools', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_imp', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_io', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_locale', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_operator', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_signal', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_sre', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_stat', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_string', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_suggestions', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),                                                                                                                                   [31/621]
 Package(name='_symtable', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_sysconfig', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_thread', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_tokenize', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_tracemalloc', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_typing', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_warnings', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='_weakref', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='atexit', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='builtins', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='errno', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='faulthandler', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='gc', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='itertools', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='marshal', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='posix', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='pwd', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='sys', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>),
 Package(name='time', source=<Source.BUILTIN: 2>, path=None, type=<PackageType.BUILTIN: 0>)]
        self       = <rope.contrib.autoimport.sqlite.AutoImport object at 0x7fd1a12fd7f0>
rope/contrib/autoimport/sqlite.py:572: in _safe_iterdir
    dirs = folder.iterdir()
        folder     = PosixPath('/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_')
        self       = <rope.contrib.autoimport.sqlite.AutoImport object at 0x7fd1a12fd7f0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = PosixPath('/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_')

    def iterdir(self):
        """Yield path objects of the directory contents.

        The children are yielded in arbitrary order, and the
        special entries '.' and '..' are not included.
        """
        root_dir = str(self)
>       with os.scandir(root_dir) as scandir_it:
E       PermissionError: [Errno 13] Permission denied: '/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_'

root_dir   = '/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_'
self       = PosixPath('/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_')

/usr/lib/python3.13/pathlib/_local.py:575: PermissionError
------------------------------------------------ Captured stdout call -------------------------------------------------
(unicode error) 'utf-8' codec can't decode byte 0xf6 in position 1: invalid start byte (<string>, line 1)
invalid character '€' (U+20AC) (<string>, line 2)
encoding problem: utf8 with BOM (<string>, line 0)
unknown encoding: uft-8 (<string>, line 0)
================================================== warnings summary ===================================================
ropetest/contrib/autoimporttest.py::AutoImportTest::test_skipping_directories_not_accessible_because_of_permission_error
  /var/tmp/portage/dev-python/rope-1.13.0/work/rope-1.13.0/rope/base/project.py:230: DeprecationWarning: Delete once deprecated functions are gone
    self._init_source_folders()

ropetest/contrib/autoimporttest.py::AutoImportTest::test_skipping_directories_not_accessible_because_of_permission_error
  /var/tmp/portage/dev-python/rope-1.13.0/work/rope-1.13.0/rope/contrib/autoimport/sqlite.py:139: DeprecationWarning: The default value for `AutoImport(memory)` argument will change to use an on-disk database by default in the future. If y
ou want to use an in-memory database, you need to pass `AutoImport(memory=True)` explicitly.
    warnings.warn(

ropetest/contrib/autoimporttest.py::AutoImportTest::test_skipping_directories_not_accessible_because_of_permission_error
  /var/tmp/portage/dev-python/rope-1.13.0/work/rope-1.13.0/rope/contrib/autoimport/sqlite.py:507: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to rep
resent datetimes in UTC: datetime.datetime.now(datetime.UTC).
    datetime.utcnow().isoformat(),

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=============================================== short test summary info ===============================================
FAILED ropetest/contrib/autoimporttest.py::AutoImportTest::test_skipping_directories_not_accessible_because_of_permission_error - PermissionError: [Errno 13] Permission denied: '/var/tmp/portage/dev-python/rope-1.13.0/temp/tmpnqvx8oa_'
============================================ 1 failed, 3 warnings in 3.97s ============================================
@arkamar arkamar added the bug Unexpected or incorrect user-visible behavior label Jun 24, 2024
@musicinmybrain
Copy link

See also #801.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Unexpected or incorrect user-visible behavior
Projects
None yet
Development

No branches or pull requests

2 participants