1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-08-24 21:38:28 +00:00

[test:update] Fix CT5 to capture warning via stderr redirect

This commit is contained in:
moonshinerd 2025-06-08 11:28:13 -03:00
parent 193a7869ef
commit 25605775ab

View File

@ -1,6 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Allow direct execution # Allow direct execution
import io
import os import os
import sys import sys
import unittest import unittest
@ -10,6 +11,7 @@
from test.helper import FakeYDL, report_warning from test.helper import FakeYDL, report_warning
from yt_dlp.update import UpdateInfo, Updater from yt_dlp.update import UpdateInfo, Updater
from contextlib import redirect_stderr
# XXX: Keep in sync with yt_dlp.update.UPDATE_SOURCES # XXX: Keep in sync with yt_dlp.update.UPDATE_SOURCES
@ -272,63 +274,70 @@ def test(target, expected, current_version=None, current_commit=None, identifier
test('testing', None, current_commit='9' * 40) test('testing', None, current_commit='9' * 40)
test('testing', UpdateInfo('testing', commit='9' * 40)) test('testing', UpdateInfo('testing', commit='9' * 40))
def test_get_version_info(self): def test_get_version_info_custom_cases(self):
updater = FakeUpdater(FakeYDL(), 'stable') updater = FakeUpdater(FakeYDL(), 'stable')
# CT1 - Tag Already in Required Format # CT1 Tag Already in Required Format
updater._identifier = 'zip' updater._identifier = 'zip'
updater.requested_repo = 'yt-dlp/yt-dlp' updater.requested_repo = 'yt-dlp/yt-dlp'
version, commit = updater._get_version_info('2025.04.06', {}) version, commit = updater._get_version_info('2025.04.06')
self.assertEqual(version, '2025.04.06') self.assertEqual(version, '2025.04.06')
self.assertIsNone(commit) self.assertIsNone(commit)
# CT2 - Fetch Latest Release Without Commit Hash # CT2 Fetch Latest Release Without Commit Hash
tag = 'latest'
updater.requested_repo = 'yt-dlp/yt-dlp'
updater._call_api = lambda _: { updater._call_api = lambda _: {
'tag_name': 'v2025.04.06', 'tag_name': 'v2025.04.06',
'name': 'Release 2025.04.06', 'name': 'Release 2025.04.06',
'target_commitish': '', 'target_commitish': '',
'body': '- Adds support for the new URL parser\n- Fixes bug in simultaneous downloads\n', 'body': '- Adds support for the new URL parser\n- Fixes bug in simultaneous downloads\n',
} }
version, commit = updater._get_version_info(tag, updater._call_api(tag)) version, commit = updater._get_version_info('latest')
self.assertEqual(version, 'v2025.04.06') self.assertEqual(version, 'v2025.04.06')
self.assertIsNone(commit) self.assertIsNone(commit)
# CT3 - Fallback to Commit Hash When Tag Is Empty # CT3 Fallback to Commit Hash When Tag Is Empty
updater._call_api = lambda _: { updater._call_api = lambda _: {
'tag_name': 'v2024.02.01', 'tag_name': 'v2024.02.01',
'name': 'Release candidate', 'name': 'Release candidate',
'target_commitish': 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4', 'target_commitish': 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4',
'body': '- Implements extra parameter validation\n- Optimizes performance in date parser\n', 'body': '- Implements extra parameter validation\n- Optimizes performance in date parser\n',
} }
version, commit = updater._get_version_info('', updater._call_api('')) version, commit = updater._get_version_info('')
self.assertIsNone(version) self.assertIsNone(version)
self.assertEqual(commit, 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4') self.assertEqual(commit, 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4')
# CT4 - Extract Version from Name with Empty Tag and Body Hash # CT4 Extract Version from Name with Empty Tag and Body Hash
updater._call_api = lambda _: { updater._call_api = lambda _: {
'tag_name': 'v2024.02.01', 'tag_name': 'v2024.02.01',
'name': 'Release 2024.02.01', 'name': 'Release 2024.02.01',
'target_commitish': '', 'target_commitish': '',
'body': 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4\n- Implements extra parameter validation\n- Optimizes performance in date parser\n', 'body': 'a1b2c3d4e5f60718293a4b5c6d7e8f9012ab3cd4\n- Implements extra parameter validation\n- Optimizes performance in date parser\n',
} }
version, commit = updater._get_version_info('', updater._call_api('')) version, commit = updater._get_version_info('')
self.assertEqual(version, '2024.02.01') self.assertEqual(version, '2024.02.01')
self.assertIsNone(commit) self.assertIsNone(commit)
# CT5 - Error on Missing Version and Commit Hash # CT5 Error on Missing Version and Commit Hash
updater._call_api = lambda _: { updater._call_api = lambda _: {
'tag_name': 'v2024.02.01', 'tag_name': 'v2024.02.01',
'name': 'Release candidate', 'name': 'Release candidate',
'target_commitish': '', 'target_commitish': '',
'body': '- Implements extra parameter validation\n- Optimizes performance in date parser\n', 'body': '- Implements extra parameter validation\n- Optimizes performance in date parser\n',
} }
with self.assertLogs(level='WARNING') as cm:
version, commit = updater._get_version_info('', updater._call_api('')) # captura de stderr
self.assertIsNone(version) stderr = io.StringIO()
self.assertIsNone(commit) with redirect_stderr(stderr):
self.assertTrue(any('One of either version or commit hash must be available' in m for m in cm.output)) version, commit = updater._get_version_info('')
self.assertIsNone(version)
self.assertIsNone(commit)
err = stderr.getvalue()
self.assertIn(
"One of either version or commit hash must be available on the release",
err
)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()