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:
parent
193a7869ef
commit
25605775ab
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user