Align the fetch-lyrics summary with fetch-artists via shared utils

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 15:34:26 +08:00
co-authored by Claude Fable 5
parent 81975b72e4
commit 0d3cd69a0f
8 changed files with 68 additions and 36 deletions
-11
View File
@@ -587,17 +587,6 @@ class TestFetchArtists(unittest.TestCase):
urlopen.assert_not_called()
self.assertIn("error:", stderr)
def test_format_duration_under_hour(self) -> None:
"""Test the mm:ss format for a duration under one hour."""
self.assertEqual(
fetch_artists.format_duration(205), "03:25")
def test_format_duration_over_hour(self) -> None:
"""Test the h:mm:ss format once the duration reaches an
hour."""
self.assertEqual(
fetch_artists.format_duration(6439), "1:47:19")
def test_summary_line_exact_shape(self) -> None:
"""Test the exact wording and timing of the summary
line."""
+4 -2
View File
@@ -170,7 +170,8 @@ class TestFetchLyrics(unittest.TestCase):
["1", "lyrics.ovh", "api-fetch"])
self.assertNotEqual(rows[1][3], "")
self.assertEqual(rows[1][4], "")
self.assertIn("1 fetched, 0 missed", stderr)
self.assertIn(
"Done. Fetched lyrics for 1/1 songs.", stderr)
def test_lrclib_fallback(self) -> None:
"""Test that an ovh miss falls back to an LRCLIB hit."""
@@ -247,7 +248,8 @@ class TestFetchLyrics(unittest.TestCase):
self.assertFalse((self.__lyrics / "1.txt").exists())
self.assertFalse(self.__provenance.exists())
self.assertIn("song 1 \"Hello\": miss", stderr)
self.assertIn("0 fetched, 1 missed", stderr)
self.assertIn(
"Done. Fetched lyrics for 0/1 songs.", stderr)
def test_cached_song_skipped(self) -> None:
"""Test that a cached song triggers no HTTP request."""
+21
View File
@@ -0,0 +1,21 @@
# Tools for A Feminist Audit of Pop Music.
# Copyright 2026 imacat. All rights reserved.
# Authors:
# imacat@mail.imacat.idv.tw (imacat), 2026/8/4
"""Unit tests for the shared utilities module."""
import unittest
from pop_fem_audit_tools import utils
class TestUtils(unittest.TestCase):
"""Test cases for the shared utilities."""
def test_format_duration_under_hour(self) -> None:
"""Test the mm:ss format for a duration under one hour."""
self.assertEqual(utils.format_duration(205), "03:25")
def test_format_duration_over_hour(self) -> None:
"""Test the h:mm:ss format once the duration reaches an
hour."""
self.assertEqual(utils.format_duration(6439), "1:47:19")