]>
jfr.im git - yt-dlp.git/blob - test/test_post_hooks.py
3 from __future__
import unicode_literals
8 sys
.path
.insert(0, os
.path
.dirname(os
.path
.dirname(os
.path
.abspath(__file__
))))
10 from test
.helper
import get_params
, try_rm
, is_download_test
11 import yt_dlp
.YoutubeDL
12 from yt_dlp
.utils
import DownloadError
15 class YoutubeDL(yt_dlp
.YoutubeDL
):
16 def __init__(self
, *args
, **kwargs
):
17 super(YoutubeDL
, self
).__init
__(*args
, **kwargs
)
18 self
.to_stderr
= self
.to_screen
21 TEST_ID
= 'gr51aVj-mLg'
22 EXPECTED_NAME
= 'gr51aVj-mLg'
26 class TestPostHooks(unittest
.TestCase
):
28 self
.stored_name_1
= None
29 self
.stored_name_2
= None
30 self
.params
= get_params({
31 'skip_download': False,
32 'writeinfojson': False,
39 def test_post_hooks(self
):
40 self
.params
['post_hooks'] = [self
.hook_one
, self
.hook_two
]
41 ydl
= YoutubeDL(self
.params
)
42 ydl
.download([TEST_ID
])
43 self
.assertEqual(self
.stored_name_1
, EXPECTED_NAME
, 'Not the expected name from hook 1')
44 self
.assertEqual(self
.stored_name_2
, EXPECTED_NAME
, 'Not the expected name from hook 2')
46 def test_post_hook_exception(self
):
47 self
.params
['post_hooks'] = [self
.hook_three
]
48 ydl
= YoutubeDL(self
.params
)
49 self
.assertRaises(DownloadError
, ydl
.download
, [TEST_ID
])
51 def hook_one(self
, filename
):
52 self
.stored_name_1
, _
= os
.path
.splitext(os
.path
.basename(filename
))
53 self
.files
.append(filename
)
55 def hook_two(self
, filename
):
56 self
.stored_name_2
, _
= os
.path
.splitext(os
.path
.basename(filename
))
57 self
.files
.append(filename
)
59 def hook_three(self
, filename
):
60 self
.files
.append(filename
)
61 raise Exception('Test exception for \'%s\'' % filename
)
68 if __name__
== '__main__':