-
-
Notifications
You must be signed in to change notification settings - Fork 960
/
unittest.py
31 lines (24 loc) · 883 Bytes
/
unittest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
import os
import tempfile
from django.test.utils import override_settings
from weblate.utils.files import remove_tree
# Lowercase name to be consistent with Django
class tempdir_setting(override_settings): # noqa: N801
def __init__(self, setting) -> None:
kwargs = {setting: None}
super().__init__(**kwargs)
self._tempdir: str | None = None
self._setting = setting
def enable(self) -> None:
self._tempdir = tempfile.mkdtemp()
os.chmod(self._tempdir, 0o755) # noqa: S103, nosec
self.options[self._setting] = self._tempdir
super().enable()
def disable(self) -> None:
super().disable()
if self._tempdir is not None:
remove_tree(self._tempdir)
self._tempdir = None