filename must be a full path

This commit is contained in:
Emmanuel Garette 2021-02-17 09:50:36 +01:00
parent 99a422dad7
commit 385160cabd
2 changed files with 12 additions and 9 deletions

View file

@ -323,13 +323,10 @@ async def test_filename(config_type):
await cfg.option('a').value.set('/tmp') await cfg.option('a').value.set('/tmp')
await cfg.option('a').value.set('/tmp/') await cfg.option('a').value.set('/tmp/')
await cfg.option('a').value.set('/tmp/text.txt') await cfg.option('a').value.set('/tmp/text.txt')
await cfg.option('a').value.set('tmp') await cfg.option('a').value.set('/tmp/with space.txt')
await cfg.option('a').value.set('tmp/') await cfg.option('a').value.set('/tmp/with$.txt')
await cfg.option('a').value.set('tmp/text.txt')
with pytest.raises(ValueError): with pytest.raises(ValueError):
await cfg.option('a').value.set('/tmp/with space.txt') await cfg.option('a').value.set('not starts with /')
with pytest.raises(ValueError):
await cfg.option('a').value.set('/tmp/with$.txt')
assert not await list_sessions() assert not await list_sessions()

View file

@ -21,11 +21,17 @@
import re import re
from ..i18n import _ from ..i18n import _
from .stroption import RegexpOption from .stroption import StrOption
class FilenameOption(RegexpOption): class FilenameOption(StrOption):
__slots__ = tuple() __slots__ = tuple()
_regexp = re.compile(r"^[a-zA-Z0-9\-\._~/+]+$")
_type = 'filename' _type = 'filename'
_display_name = _('file name') _display_name = _('file name')
def validate(self,
value: str,
) -> None:
super().validate(value)
if not value.startswith('/'):
raise ValueError(_('must starts with "/"'))