mirror of
https://github.com/beetbox/beets.git
synced 2025-12-30 12:32:33 +01:00
Introduce TestHelper.temp_dir_path
This commit is contained in:
parent
9e4b117454
commit
edd3df99ba
7 changed files with 30 additions and 35 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in a new issue