[DEV] Unit test music tags (#1074)

This commit is contained in:
Jesse Bannon 2024-09-29 23:33:00 -07:00 committed by GitHub
parent f2ec26d77e
commit 1caade46bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 48 additions and 45 deletions

View file

@ -1,45 +0,0 @@
import re
import pytest
from ytdl_sub.subscriptions.subscription import Subscription
from ytdl_sub.utils.exceptions import ValidationException
@pytest.fixture
def single_song_video_dict(output_directory):
return {
"download": "https://www.youtube.com/watch?v=2lAe1cqCOXo",
"output_options": {"output_directory": output_directory, "file_name": "will_error.mp4"},
# test multi-tags
"music_tags": {"genres": ["multi_tag_1", "multi_tag_2"]},
"format": "worst[ext=mp4]", # download the worst format so it is fast
"ytdl_options": {
"postprocessor_args": {"ffmpeg": ["-bitexact"]}, # Must add this for reproducibility
},
}
class TestMusicTags:
def test_music_tags_errors_on_video(
self,
default_config,
single_song_video_dict,
output_directory,
):
subscription = Subscription.from_dict(
config=default_config,
preset_name="single_song_test",
preset_dict=single_song_video_dict,
)
with pytest.raises(
ValidationException,
match=re.escape(
"Validation error in single_song_test.music_tags: music_tags plugin received a "
"video with the extension 'mp4'. Only audio files are supported for setting music "
"tags. Ensure you are converting the video to audio using the audio_extract "
"plugin."
),
):
subscription.download(dry_run=True)

View file

@ -0,0 +1,48 @@
import re
import pytest
from ytdl_sub.subscriptions.subscription import Subscription
from ytdl_sub.utils.exceptions import ValidationException
@pytest.fixture
def single_song_video_dict(output_directory):
return {
"download": "https://your.name.here",
"output_options": {"output_directory": output_directory, "file_name": "will_error.mp4"},
# test multi-tags compile
"music_tags": {"genres": ["multi_tag_1", "multi_tag_2"]},
}
class TestMusicTags:
def test_music_tags_errors_on_video(
self,
config,
single_song_video_dict,
output_directory,
subscription_name,
mock_download_collection_entries,
):
subscription = Subscription.from_dict(
config=config,
preset_name=subscription_name,
preset_dict=single_song_video_dict,
)
with (
mock_download_collection_entries(
is_youtube_channel=False, num_urls=1, is_extracted_audio=False, is_dry_run=True
),
pytest.raises(
ValidationException,
match=re.escape(
f"Validation error in {subscription_name}.music_tags: music_tags plugin received a "
"video with the extension 'mp4'. Only audio files are supported for setting music "
"tags. Ensure you are converting the video to audio using the audio_extract "
"plugin."
),
),
):
subscription.download(dry_run=True)