Introduce TestHelper.temp_dir_path

This commit is contained in:
Šarūnas Nejus 2025-05-31 23:19:59 +01:00
parent 9e4b117454
commit edd3df99ba
No known key found for this signature in database
GPG key ID: DD28F6704DBE3435
7 changed files with 30 additions and 35 deletions

View file

@ -186,6 +186,14 @@ class TestHelper(_common.Assertions, ConfigMixin):
db_on_disk: ClassVar[bool] = False
@cached_property
def temp_dir_path(self) -> Path:
return Path(self.create_temp_dir())
@cached_property
def temp_dir(self) -> bytes:
return util.bytestring_path(self.temp_dir_path)
# TODO automate teardown through hook registration
def setup_beets(self):
@ -208,8 +216,7 @@ class TestHelper(_common.Assertions, ConfigMixin):
Make sure you call ``teardown_beets()`` afterwards.
"""
self.create_temp_dir()
temp_dir_str = os.fsdecode(self.temp_dir)
temp_dir_str = str(self.temp_dir_path)
self.env_patcher = patch.dict(
"os.environ",
{
@ -394,16 +401,12 @@ class TestHelper(_common.Assertions, ConfigMixin):
# Safe file operations
def create_temp_dir(self, **kwargs):
"""Create a temporary directory and assign it into
`self.temp_dir`. Call `remove_temp_dir` later to delete it.
"""
temp_dir = mkdtemp(**kwargs)
self.temp_dir = util.bytestring_path(temp_dir)
def create_temp_dir(self, **kwargs) -> str:
return mkdtemp(**kwargs)
def remove_temp_dir(self):
"""Delete the temporary directory created by `create_temp_dir`."""
shutil.rmtree(syspath(self.temp_dir))
shutil.rmtree(self.temp_dir_path)
def touch(self, path, dir=None, content=""):
"""Create a file at `path` with given content.
@ -541,7 +544,7 @@ class ImportHelper(TestHelper):
@cached_property
def import_path(self) -> Path:
import_path = Path(os.fsdecode(self.temp_dir)) / "import"
import_path = self.temp_dir_path / "import"
import_path.mkdir(exist_ok=True)
return import_path

View file

@ -15,7 +15,7 @@
from __future__ import annotations
import os.path
import os
import sys
import unittest
from contextlib import contextmanager
@ -74,8 +74,7 @@ class HookCommandTest(HookTestCase):
def setUp(self):
super().setUp()
temp_dir = os.fsdecode(self.temp_dir)
self.paths = [os.path.join(temp_dir, e) for e in self.events]
self.paths = [str(self.temp_dir_path / e) for e in self.events]
def _test_command(
self,

View file

@ -12,8 +12,8 @@ class ImportfeedsTestTest(BeetsTestCase):
def setUp(self):
super().setUp()
self.importfeeds = ImportFeedsPlugin()
self.feeds_dir = os.path.join(os.fsdecode(self.temp_dir), "importfeeds")
config["importfeeds"]["dir"] = self.feeds_dir
self.feeds_dir = self.temp_dir_path / "importfeeds"
config["importfeeds"]["dir"] = str(self.feeds_dir)
def test_multi_format_album_playlist(self):
config["importfeeds"]["formats"] = "m3u_multi"
@ -24,10 +24,8 @@ class ImportfeedsTestTest(BeetsTestCase):
self.lib.add(item)
self.importfeeds.album_imported(self.lib, album)
playlist_path = os.path.join(
self.feeds_dir, os.listdir(self.feeds_dir)[0]
)
assert playlist_path.endswith("album_name.m3u")
playlist_path = self.feeds_dir / next(self.feeds_dir.iterdir())
assert str(playlist_path).endswith("album_name.m3u")
with open(playlist_path) as playlist:
assert item_path in playlist.read()
@ -43,9 +41,7 @@ class ImportfeedsTestTest(BeetsTestCase):
self.lib.add(item)
self.importfeeds.album_imported(self.lib, album)
playlist = os.path.join(
self.feeds_dir, config["importfeeds"]["m3u_name"].get()
)
playlist = self.feeds_dir / config["importfeeds"]["m3u_name"].get()
playlist_subdir = os.path.dirname(playlist)
assert os.path.isdir(playlist_subdir)
assert os.path.isfile(playlist)
@ -62,7 +58,7 @@ class ImportfeedsTestTest(BeetsTestCase):
self.importfeeds.import_begin(self)
self.importfeeds.album_imported(self.lib, album)
date = datetime.datetime.now().strftime("%Y%m%d_%Hh%M")
playlist = os.path.join(self.feeds_dir, f"imports_{date}.m3u")
playlist = self.feeds_dir / f"imports_{date}.m3u"
assert os.path.isfile(playlist)
with open(playlist) as playlist_contents:
assert item_path in playlist_contents.read()

View file

@ -311,7 +311,7 @@ class BPDTestHelper(PluginTestCase):
"""
# Create a config file:
config = {
"pluginpath": [os.fsdecode(self.temp_dir)],
"pluginpath": [str(self.temp_dir_path)],
"plugins": "bpd",
# use port 0 to let the OS choose a free port
"bpd": {"host": host, "port": 0, "control_port": 0},
@ -320,7 +320,7 @@ class BPDTestHelper(PluginTestCase):
config["bpd"]["password"] = password
config_file = tempfile.NamedTemporaryFile(
mode="wb",
dir=os.fsdecode(self.temp_dir),
dir=str(self.temp_dir_path),
suffix=".yaml",
delete=False,
)

View file

@ -72,12 +72,10 @@ class PlaylistTestCase(PluginTestCase):
self.lib.add(i3)
self.lib.add_album([i3])
self.playlist_dir = os.path.join(
os.fsdecode(self.temp_dir), "playlists"
)
os.makedirs(self.playlist_dir)
self.playlist_dir = self.temp_dir_path / "playlists"
self.playlist_dir.mkdir(parents=True, exist_ok=True)
self.config["directory"] = self.music_dir
self.config["playlist"]["playlist_dir"] = self.playlist_dir
self.config["playlist"]["playlist_dir"] = str(self.playlist_dir)
self.setup_test()
self.load_plugins()
@ -222,7 +220,7 @@ class PlaylistTestRelativeToPls(PlaylistQueryTest, PlaylistTestCase):
)
self.config["playlist"]["relative_to"] = "playlist"
self.config["playlist"]["playlist_dir"] = self.playlist_dir
self.config["playlist"]["playlist_dir"] = str(self.playlist_dir)
class PlaylistUpdateTest:

View file

@ -23,7 +23,6 @@ import sys
import unicodedata
import unittest
from io import StringIO
from pathlib import Path
from tarfile import TarFile
from tempfile import mkstemp
from unittest.mock import Mock, patch
@ -194,7 +193,7 @@ class NonAutotaggedImportTest(AsIsImporterMixin, ImportTestCase):
def create_archive(session):
(handle, path) = mkstemp(dir=os.fsdecode(session.temp_dir))
handle, path = mkstemp(dir=session.temp_dir_path)
path = bytestring_path(path)
os.close(handle)
archive = ZipFile(os.fsdecode(path), mode="w")
@ -1623,7 +1622,7 @@ class ImportPretendTest(IOMixin, AutotagImportTestCase):
]
def test_import_pretend_empty(self):
empty_path = Path(os.fsdecode(self.temp_dir)) / "empty"
empty_path = self.temp_dir_path / "empty"
empty_path.mkdir()
importer = self.setup_importer(pretend=True, import_dir=empty_path)

View file

@ -194,7 +194,7 @@ class DestinationTest(BeetsTestCase):
def create_temp_dir(self, **kwargs):
kwargs["prefix"] = "."
super().create_temp_dir(**kwargs)
return super().create_temp_dir(**kwargs)
def setUp(self):
super().setUp()