From ea49e4d50658274c0443e36868ba99f0d88eef76 Mon Sep 17 00:00:00 2001 From: IAlibay Date: Sun, 9 Apr 2023 09:57:18 +0100 Subject: [PATCH 1/4] Fix Pytest 7.3 PermissionErrors for read only tmpdirs --- testsuite/MDAnalysisTests/coordinates/test_xdr.py | 14 +++++++++++--- testsuite/MDAnalysisTests/core/test_universe.py | 10 ++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/testsuite/MDAnalysisTests/coordinates/test_xdr.py b/testsuite/MDAnalysisTests/coordinates/test_xdr.py index 1ca133acc6b..5da3e6c821c 100644 --- a/testsuite/MDAnalysisTests/coordinates/test_xdr.py +++ b/testsuite/MDAnalysisTests/coordinates/test_xdr.py @@ -23,14 +23,13 @@ import pytest from unittest.mock import patch -import errno -import numpy as np import os -from os.path import split import shutil +import stat import subprocess from pathlib import Path +import numpy as np from numpy.testing import (assert_equal, assert_almost_equal, assert_allclose) @@ -890,6 +889,15 @@ def test_persistent_offsets_readonly(self, tmpdir): assert_equal(os.path.exists(XDR.offsets_filename(filename, ending='.lock')), False) + # pre-teardown permission fix - leaving permission blocked dir + # is problematic on py3.9 + Windows it seems. + if os.name == 'nt': + subprocess.call(f"icacls {tmpdir} /grant Users:W", shell=True) + else: + os.chmod(str(tmpdir), 0o777) + + shutil.rmtree(tmpdir) + def test_offset_lock_created(self): assert os.path.exists(XDR.offsets_filename(self.filename, ending='lock')) diff --git a/testsuite/MDAnalysisTests/core/test_universe.py b/testsuite/MDAnalysisTests/core/test_universe.py index ddc69ce0271..7aca211b078 100644 --- a/testsuite/MDAnalysisTests/core/test_universe.py +++ b/testsuite/MDAnalysisTests/core/test_universe.py @@ -23,6 +23,7 @@ import pickle import os +import shutil import subprocess import errno from collections import defaultdict @@ -170,6 +171,15 @@ def test_Universe_invalidpermissionfile_IE_msg(self, tmpdir): with pytest.raises(PermissionError, match=f"Errno {errno.EACCES}"): mda.Universe('permission.denied.tpr') + # pre-teardown permission fix - leaving permission blocked dir + # is problematic on py3.9 + Windows it seems. + if os.name == 'nt': + subprocess.call(f"icacls {tmpdir} /grant Users:W", shell=True) + else: + os.chmod(str(tmpdir), 0o777) + + shutil.rmtree(tmpdir) + def test_load_new_VE(self): u = mda.Universe.empty(0) From 00be63e2a187ffac8fc27943bd0b6e2cb4cef6c0 Mon Sep 17 00:00:00 2001 From: IAlibay Date: Sun, 9 Apr 2023 10:30:10 +0100 Subject: [PATCH 2/4] remove unecessary fix --- testsuite/MDAnalysisTests/core/test_universe.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/testsuite/MDAnalysisTests/core/test_universe.py b/testsuite/MDAnalysisTests/core/test_universe.py index 7aca211b078..f423dbb857a 100644 --- a/testsuite/MDAnalysisTests/core/test_universe.py +++ b/testsuite/MDAnalysisTests/core/test_universe.py @@ -171,15 +171,6 @@ def test_Universe_invalidpermissionfile_IE_msg(self, tmpdir): with pytest.raises(PermissionError, match=f"Errno {errno.EACCES}"): mda.Universe('permission.denied.tpr') - # pre-teardown permission fix - leaving permission blocked dir - # is problematic on py3.9 + Windows it seems. - if os.name == 'nt': - subprocess.call(f"icacls {tmpdir} /grant Users:W", shell=True) - else: - os.chmod(str(tmpdir), 0o777) - - shutil.rmtree(tmpdir) - def test_load_new_VE(self): u = mda.Universe.empty(0) From 4e63cbfbbc123d0ec26b4e694bc6b582015183c7 Mon Sep 17 00:00:00 2001 From: Irfan Alibay Date: Sun, 9 Apr 2023 17:12:22 +0100 Subject: [PATCH 3/4] Update test_universe.py --- testsuite/MDAnalysisTests/core/test_universe.py | 1 - 1 file changed, 1 deletion(-) diff --git a/testsuite/MDAnalysisTests/core/test_universe.py b/testsuite/MDAnalysisTests/core/test_universe.py index f423dbb857a..ddc69ce0271 100644 --- a/testsuite/MDAnalysisTests/core/test_universe.py +++ b/testsuite/MDAnalysisTests/core/test_universe.py @@ -23,7 +23,6 @@ import pickle import os -import shutil import subprocess import errno from collections import defaultdict From 7bed9f4f5354ea3b978353961a76bb733f776d34 Mon Sep 17 00:00:00 2001 From: Irfan Alibay Date: Sun, 9 Apr 2023 21:36:25 +0100 Subject: [PATCH 4/4] Add issue reference + remove unused stat import --- testsuite/MDAnalysisTests/coordinates/test_xdr.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/testsuite/MDAnalysisTests/coordinates/test_xdr.py b/testsuite/MDAnalysisTests/coordinates/test_xdr.py index 5da3e6c821c..e2e8160471f 100644 --- a/testsuite/MDAnalysisTests/coordinates/test_xdr.py +++ b/testsuite/MDAnalysisTests/coordinates/test_xdr.py @@ -25,7 +25,6 @@ import os import shutil -import stat import subprocess from pathlib import Path @@ -890,7 +889,9 @@ def test_persistent_offsets_readonly(self, tmpdir): ending='.lock')), False) # pre-teardown permission fix - leaving permission blocked dir - # is problematic on py3.9 + Windows it seems. + # is problematic on py3.9 + Windows it seems. See issue + # [4123](https://github.com/MDAnalysis/mdanalysis/issues/4123) + # for more details. if os.name == 'nt': subprocess.call(f"icacls {tmpdir} /grant Users:W", shell=True) else: