mirror of
https://github.com/beetbox/beets.git
synced 2026-04-01 19:23:55 +02:00
Convert item paths to relative on write and back to absolute on read, keeping the database free of hardcoded library directory. Fix tests to account for absolute path return values.
68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
from beets.test import _common
|
|
from beets.test.helper import BeetsTestCase, IOMixin
|
|
from beets.ui.commands.list import list_items
|
|
|
|
|
|
class ListTest(IOMixin, BeetsTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.item = _common.item()
|
|
self.item.path = "xxx/yyy"
|
|
self.lib.add(self.item)
|
|
self.lib.add_album([self.item])
|
|
|
|
def _run_list(self, query="", album=False, path=False, fmt=""):
|
|
list_items(self.lib, query, album, fmt)
|
|
return self.io.getoutput()
|
|
|
|
def test_list_outputs_item(self):
|
|
stdout = self._run_list()
|
|
assert "the title" in stdout
|
|
|
|
def test_list_unicode_query(self):
|
|
self.item.title = "na\xefve"
|
|
self.item.store()
|
|
self.lib._connection().commit()
|
|
|
|
stdout = self._run_list(["na\xefve"])
|
|
out = stdout
|
|
assert "na\xefve" in out
|
|
|
|
def test_list_item_path(self):
|
|
stdout = self._run_list(fmt="$path")
|
|
assert stdout.strip() == str(self.lib_path / "xxx/yyy")
|
|
|
|
def test_list_album_outputs_something(self):
|
|
stdout = self._run_list(album=True)
|
|
assert len(stdout) > 0
|
|
|
|
def test_list_album_path(self):
|
|
stdout = self._run_list(album=True, fmt="$path")
|
|
assert stdout.strip() == str(self.lib_path / "xxx")
|
|
|
|
def test_list_album_omits_title(self):
|
|
stdout = self._run_list(album=True)
|
|
assert "the title" not in stdout
|
|
|
|
def test_list_uses_track_artist(self):
|
|
stdout = self._run_list()
|
|
assert "the artist" in stdout
|
|
assert "the album artist" not in stdout
|
|
|
|
def test_list_album_uses_album_artist(self):
|
|
stdout = self._run_list(album=True)
|
|
assert "the artist" not in stdout
|
|
assert "the album artist" in stdout
|
|
|
|
def test_list_item_format_artist(self):
|
|
stdout = self._run_list(fmt="$artist")
|
|
assert "the artist" in stdout
|
|
|
|
def test_list_item_format_multiple(self):
|
|
stdout = self._run_list(fmt="$artist - $album - $year")
|
|
assert "the artist - the album - 0001" == stdout.strip()
|
|
|
|
def test_list_album_format(self):
|
|
stdout = self._run_list(album=True, fmt="$genres")
|
|
assert "the genre" in stdout
|
|
assert "the album" not in stdout
|