From ce4718f1fb70cada6d3a3ecc4d3d1107459a8f84 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Tue, 13 Feb 2024 15:31:40 -0500 Subject: [PATCH] fix samefile check and relative path test --- koji/util.py | 3 ++- tests/test_lib/test_utils.py | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/koji/util.py b/koji/util.py index 3c811433..947ed18e 100644 --- a/koji/util.py +++ b/koji/util.py @@ -576,6 +576,7 @@ def _rmtree_nofork(path, logger=None): raise koji.GenericError("Not a directory: %s" % path) dev = st.st_dev cwd = os.getcwd() + abspath = os.path.abspath(path) try: # retry loop @@ -584,7 +585,7 @@ def _rmtree_nofork(path, logger=None): os.chdir(path) new_cwd = os.getcwd() # make sure we're where we think we are - if not os.path.samefile(new_cwd, path): + if not os.path.samefile(new_cwd, abspath): raise koji.GenericError('chdir to %s resulted in different cwd %s', path, new_cwd) except OSError as e: diff --git a/tests/test_lib/test_utils.py b/tests/test_lib/test_utils.py index 790dfa17..7acfc5a2 100644 --- a/tests/test_lib/test_utils.py +++ b/tests/test_lib/test_utils.py @@ -1640,17 +1640,18 @@ class TestRmtree2(unittest.TestCase): raise Exception('test directory not removed') def test_rmtree_relative(self): - dirname = 'some-dir-95628' # relative - os.makedirs('%s/%s/a/b/c/d/e/f/g/h/i/j/k' % (self.tempdir, dirname)) + relpath = 'some-dir-95628' + path = "%s/%s" % (self.tempdir, relpath) + os.makedirs('%s/a/b/c/d/e/f/g/h/i/j/k' % path) oldcwd = os.getcwd() os.chdir(self.tempdir) try: - koji.util._rmtree_nofork(dirname) + koji.util._rmtree_nofork(relpath) finally: os.chdir(oldcwd) - if not os.path.exists(dirname): + if os.path.exists(path): raise Exception('test directory not removed') def test_rmtree_dev_change(self):