mounter: use custom exception for absolute path error

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2024-01-24 11:05:25 +01:00
parent 162f00b773
commit bcfa6b1c9c
2 changed files with 23 additions and 1 deletions

View File

@ -51,11 +51,15 @@ class OverlayCleanupError(Exception):
"""Exception to raise when an overlay could not be cleaned up."""
class AbsolutePathError(Exception):
pass
class _MountBase:
def p(self, *args: str) -> str:
for a in args:
if a.startswith("/"):
raise Exception("no absolute paths here please")
raise AbsolutePathError("no absolute paths here please")
return os.path.join(self.mountpoint, *args)
def write(self, path, content):

View File

@ -18,15 +18,33 @@ import pathlib
from unittest.mock import AsyncMock, Mock, call, patch
from subiquity.server.mounter import (
AbsolutePathError,
Mounter,
Mountpoint,
OverlayMountpoint,
_MountBase,
lowerdir_for,
)
from subiquitycore.tests import SubiTestCase
from subiquitycore.tests.mocks import make_app
class Test_MountBase(SubiTestCase):
def setUp(self):
self.mountbase = _MountBase()
self.mountbase.mountpoint = "/target"
def test_p(self):
mnt = self.mountbase
self.assertEqual("/target/d1", mnt.p("d1"))
self.assertEqual("/target/d1/d2/d3/d4", mnt.p("d1", "d2/d3", "d4"))
def test_p__absolute(self):
with self.assertRaises(AbsolutePathError):
self.mountbase.p("a", "/b")
class TestMounter(SubiTestCase):
def setUp(self):
self.model = Mock()