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

ci: Tests fail under Python 3.11 and 3.12 on Windows #278

Open
ns-rse opened this issue Mar 20, 2024 · 0 comments
Open

ci: Tests fail under Python 3.11 and 3.12 on Windows #278

ns-rse opened this issue Mar 20, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@ns-rse
Copy link
Collaborator

ns-rse commented Mar 20, 2024

Describe the bug

CI fails on Python 3.11 and 3.12 with the following...

Run pytest --cov=pgfinder
  pytest --cov=pgfinder
  shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
  env:
    pythonLocation: C:\hostedtoolcache\windows\Python\3.11.8\x64
    PKG_CONFIG_PATH: C:\hostedtoolcache\windows\Python\3.11.8\x64/lib/pkgconfig
    Python_ROOT_DIR: C:\hostedtoolcache\windows\Python\3.11.8\x64
    Python[2](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:2)_ROOT_DIR: C:\hostedtoolcache\windows\Python\[3](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:3).11.8\x6[4](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:4)
    Python3_ROOT_DIR: C:\hostedtoolcache\windows\Python\3.11.8\x64
============================= test session starts =============================
platform win32 -- Python 3.11.8, pytest-8.1.1, pluggy-1.4.0
Matplotlib: 3.8.3
Freetype: 2.6.1
rootdir: D:\a\pgfinder\pgfinder\lib
configfile: pyproject.toml
testpaths: tests
plugins: cov-4.1.0, mpl-0.17.0, regtest-2.1.1, xdist-3.[5](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:5).0
collected 19 items

tests\test_matching.py .....                                             [ 2[6](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:6)%]
tests\test_pgio.py ...FF..                                               [ 63%]
tests\test_regression.py ...                                             [ [7](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:7)[8](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:8)%]
tests\test_utils.py ...                                                  [ [9](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:9)4%]
tests\test_validation.py .                                               [[10](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:11)0%]

================================== FAILURES ===================================
_______________ test_ms_upload_reader[ftrs_test_data_5.2.ftrs] ________________

path = 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpyzayzfrn'
onerror = <function TemporaryDirectory._rmtree.<locals>.onerror at 0x000001D3A19A3C40>

    def _rmtree_unsafe(path, onerror):
        try:
            with os.scandir(path) as scandir_it:
                entries = list(scandir_it)
        except OSError:
            onerror(os.scandir, path, sys.exc_info())
            entries = []
        for entry in entries:
            fullname = entry.path
            if _rmtree_isdir(entry):
                try:
                    if entry.is_symlink():
                        # This can only happen if someone replaces
                        # a directory with a symlink after the call to
                        # os.scandir or entry.is_dir above.
                        raise OSError("Cannot call rmtree on a symbolic link")
                except OSError:
                    onerror(os.path.islink, fullname, sys.exc_info())
                    continue
                _rmtree_unsafe(fullname, onerror)
            else:
                try:
>                   os.unlink(fullname)
E                   PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpyzayzfrn\\ftrs_test_data.ftrs'

C:\hostedtoolcache\windows\Python\3.[11](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:12).8\x64\Lib\shutil.py:632: PermissionError

During handling of the above exception, another exception occurred:

ipywidgets_upload_output = {'content': b'SQLite format 3\x00\x10\x00\x01\x01\x00@  \x00\x02k\xbd\x00\x00\x0cp\x00\x00\x00\x00\x00\x00\x00\x00\x00...time(2022, 2, 2, 11, 6, 9, 951000, tzinfo=datetime.timezone.utc), 'name': 'ftrs_test_data.ftrs', 'size': 14274560, ...}

    def test_ms_upload_reader(ipywidgets_upload_output):
>       assert isinstance(ms_upload_reader(ipywidgets_upload_output), pd.DataFrame)

tests\test_pgio.py:26: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pgfinder\gui\internal.py:23: in ms_upload_reader
    with uploaded_file(upload) as file:
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\contextlib.py:144: in __exit__
    next(self.gen)
pgfinder\gui\internal.py:29: in uploaded_file
    with tempfile.TemporaryDirectory() as tempdir:
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:943: in __exit__
    self.cleanup()
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:947: in cleanup
    self._rmtree(self.name, ignore_errors=self._ignore_cleanup_errors)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:929: in _rmtree
    _shutil.rmtree(name, onerror=onerror)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\shutil.py:787: in rmtree
    return _rmtree_unsafe(path, onerror)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\shutil.py:634: in _rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

func = <built-in function unlink>
path = 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpyzayzfrn\\ftrs_test_data.ftrs'
exc_info = (<class 'PermissionError'>, PermissionError([13](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:14), 'The process cannot access the file because it is being used by another process'), <traceback object at 0x000001D3A1967FC0>)

    def onerror(func, path, exc_info):
        if issubclass(exc_info[0], PermissionError):
            if repeated and path == name:
                if ignore_errors:
                    return
                raise
    
            try:
                if path != name:
                    _resetperms(_os.path.dirname(path))
                _resetperms(path)
    
                try:
>                   _os.unlink(path)
E                   PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpyzayzfrn\\ftrs_test_data.ftrs'

C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:893: PermissionError
_______________ test_ms_upload_reader[ftrs_test_data_3.11.ftrs] _______________

path = 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmp555lx39l'
onerror = <function TemporaryDirectory._rmtree.<locals>.onerror at 0x000001D3A19B0900>

    def _rmtree_unsafe(path, onerror):
        try:
            with os.scandir(path) as scandir_it:
                entries = list(scandir_it)
        except OSError:
            onerror(os.scandir, path, sys.exc_info())
            entries = []
        for entry in entries:
            fullname = entry.path
            if _rmtree_isdir(entry):
                try:
                    if entry.is_symlink():
                        # This can only happen if someone replaces
                        # a directory with a symlink after the call to
                        # os.scandir or entry.is_dir above.
                        raise OSError("Cannot call rmtree on a symbolic link")
                except OSError:
                    onerror(os.path.islink, fullname, sys.exc_info())
                    continue
                _rmtree_unsafe(fullname, onerror)
            else:
                try:
>                   os.unlink(fullname)
E                   PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmp555lx39l\\ftrs_test_data.ftrs'

C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\shutil.py:632: PermissionError

During handling of the above exception, another exception occurred:

ipywidgets_upload_output = {'content': b'SQLite format 3\x00\x10\x00\x01\x01\x00@  \x00\x00\x00\x17\x00\x00\r\x9d\x00\x00\x00\x00\x00\x00\x00\x00...time(2022, 2, 2, 11, 6, 9, 951000, tzinfo=datetime.timezone.utc), 'name': 'ftrs_test_data.ftrs', 'size': [14](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:15)274560, ...}

    def test_ms_upload_reader(ipywidgets_upload_output):
>       assert isinstance(ms_upload_reader(ipywidgets_upload_output), pd.DataFrame)

tests\test_pgio.py:26: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pgfinder\gui\internal.py:23: in ms_upload_reader
    with uploaded_file(upload) as file:
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\contextlib.py:144: in __exit__
    next(self.gen)
pgfinder\gui\internal.py:29: in uploaded_file
    with tempfile.TemporaryDirectory() as tempdir:
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:943: in __exit__
    self.cleanup()
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:947: in cleanup
    self._rmtree(self.name, ignore_errors=self._ignore_cleanup_errors)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\tempfile.py:929: in _rmtree
    _shutil.rmtree(name, onerror=onerror)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\shutil.py:787: in rmtree
    return _rmtree_unsafe(path, onerror)
C:\hostedtoolcache\windows\Python\3.11.8\x64\Lib\shutil.py:634: in _rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

func = <built-in function unlink>
path = 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmp555lx39l\\ftrs_test_data.ftrs'
exc_info = (<class 'PermissionError'>, PermissionError(13, 'The process cannot access the file because it is being used by another process'), <traceback object at 0x000001D3A[19](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:20)6BC80>)

    def onerror(func, path, exc_info):
        if issubclass(exc_info[0], PermissionError):
            if repeated and path == name:
                if ignore_errors:
                    return
                raise
    
            try:
                if path != name:
                    _resetperms(_os.path.dirname(path))
                _resetperms(path)
    
                try:
>                   _os.unlink(path)
E                   PermissionError: [WinError [32](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:33)] The process cannot access the file because it is being used by another process: 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmp555lx[39](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:40)l\\ftrs_test_data.ftrs'

C:\hostedtoolcache\windows\Python\3.11.8\x[64](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:65)\Lib\tempfile.py:[89](https://github.com/Mesnage-Org/pgfinder/actions/runs/8365887728/job/22904806059#step:5:90)3: PermissionError
---------------------------- pytest-regtest report ----------------------------

Desktop (please complete the following information):

  • OS: Windows (latest)
  • Browser N/A
  • Version main@HEAD

Additional context

First cropped up in #269

Would be worth checking the minor Python 3.11.* version on runs prior that passed if the logs are still around.

@ns-rse ns-rse added the bug Something isn't working label Mar 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant