test: '{. -> ./mod}/test_util_rmrf.py'
Move the rmrf tests to the module-level tests and align its implementation with the others.
This commit is contained in:
parent
1ec3e5a776
commit
ea7561329f
1 changed files with 1 additions and 6 deletions
47
test/mod/test_util_rmrf.py
Normal file
47
test/mod/test_util_rmrf.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#
|
||||
# Tests for the `osbuild.util.rmrf` module.
|
||||
#
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from osbuild.util import rmrf
|
||||
|
||||
|
||||
def can_set_immutable():
|
||||
with tempfile.TemporaryDirectory(dir="/var/tmp") as tmp:
|
||||
try:
|
||||
os.makedirs(f"{tmp}/f")
|
||||
# fist they give it ...
|
||||
subprocess.run(["chattr", "+i", f"{tmp}/f"], check=True)
|
||||
# ... then they take it away
|
||||
subprocess.run(["chattr", "-i", f"{tmp}/f"], check=True)
|
||||
except (subprocess.CalledProcessError, FileNotFoundError):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
class TestUtilLinux(unittest.TestCase):
|
||||
@unittest.skipUnless(can_set_immutable(), "Need root permissions")
|
||||
def test_rmtree_immutable(self):
|
||||
#
|
||||
# Test the `rmrf.rmtree()` helper and verify it can correctly unlink
|
||||
# files that are marked immutable.
|
||||
#
|
||||
|
||||
with tempfile.TemporaryDirectory(dir="/var/tmp") as vartmpdir:
|
||||
os.makedirs(f"{vartmpdir}/dir")
|
||||
|
||||
p = pathlib.Path(f"{vartmpdir}/dir/immutable")
|
||||
p.touch()
|
||||
subprocess.run(["chattr", "+i", f"{vartmpdir}/dir/immutable"],
|
||||
check=True)
|
||||
|
||||
with self.assertRaises(PermissionError):
|
||||
shutil.rmtree(f"{vartmpdir}/dir")
|
||||
|
||||
rmrf.rmtree(f"{vartmpdir}/dir")
|
||||
Loading…
Add table
Add a link
Reference in a new issue