Merge lp:~phill-ridout/openlp/media_ext_refactors into lp:openlp

Proposed by Phill
Status: Superseded
Proposed branch: lp:~phill-ridout/openlp/media_ext_refactors
Merge into: lp:openlp
Diff against target: 471 lines (+46/-131)
12 files modified
openlp/core/common/json.py (+0/-1)
openlp/core/lib/mediamanageritem.py (+2/-2)
openlp/core/lib/serviceitem.py (+5/-3)
openlp/core/ui/media/mediacontroller.py (+3/-29)
openlp/core/ui/media/mediaplayer.py (+0/-9)
openlp/core/ui/media/vlcplayer.py (+10/-26)
openlp/core/ui/servicemanager.py (+17/-9)
openlp/core/ui/themeform.py (+2/-4)
openlp/plugins/media/lib/mediaitem.py (+6/-6)
tests/functional/openlp_core/common/test_path.py (+0/-1)
tests/functional/openlp_core/ui/media/test_mediacontroller.py (+0/-21)
tests/functional/openlp_core/ui/media/test_vlcplayer.py (+1/-20)
To merge this branch: bzr merge lp:~phill-ridout/openlp/media_ext_refactors
Reviewer Review Type Date Requested Status
Tim Bentley Needs Fixing
Review via email: mp+368212@code.launchpad.net

This proposal has been superseded by a proposal from 2019-06-01.

Commit message

refactor media extensions

To post a comment you must log in.
Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

Linux tests passed!

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

Linting passed!

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

macOS tests passed!

Revision history for this message
Tim Bentley (trb143) wrote :

Minor improvement please

review: Needs Fixing
2880. By Phill

Add media extensions in the service manager

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openlp/core/common/json.py'
2--- openlp/core/common/json.py 2019-05-23 19:33:46 +0000
3+++ openlp/core/common/json.py 2019-06-01 07:00:38 +0000
4@@ -23,7 +23,6 @@
5 from json import JSONDecoder, JSONEncoder
6 from pathlib import Path
7
8-
9 _registered_classes = {}
10
11
12
13=== modified file 'openlp/core/lib/mediamanageritem.py'
14--- openlp/core/lib/mediamanageritem.py 2019-05-22 06:47:00 +0000
15+++ openlp/core/lib/mediamanageritem.py 2019-06-01 07:00:38 +0000
16@@ -589,7 +589,7 @@
17 """
18 Add this item to the current service.
19
20- :param item: Item to be processed
21+ :param QtWidgets.QListWidgetItem | QtWidgets.QTreeWidgetItem | None item: Item to be processed
22 :param replace: Replace the existing item
23 :param remote: Triggered from remote
24 :param position: Position to place item
25@@ -627,7 +627,7 @@
26 def build_service_item(self, item=None, remote=False, context=ServiceItemContext.Live):
27 """
28 Common method for generating a service item
29- :param item: Service Item to be built.
30+ :param QtWidgets.QListWidgetItem | QtWidgets.QTreeWidgetItem | None item: Service Item to be built.
31 :param remote: Remote triggered (False)
32 :param context: The context on which this is called
33 """
34
35=== modified file 'openlp/core/lib/serviceitem.py'
36--- openlp/core/lib/serviceitem.py 2019-05-22 06:47:00 +0000
37+++ openlp/core/lib/serviceitem.py 2019-06-01 07:00:38 +0000
38@@ -593,9 +593,11 @@
39 """
40 return not bool(self.slides)
41
42- def validate_item(self, suffix_list=None):
43+ def validate_item(self, suffixes=None):
44 """
45 Validates a service item to make sure it is valid
46+
47+ :param set[str] suffixes: A set of vaild suffixes
48 """
49 self.is_valid = True
50 for slide in self.slides:
51@@ -612,8 +614,8 @@
52 if not os.path.exists(file_name):
53 self.is_valid = False
54 break
55- if suffix_list and not self.is_text():
56+ if suffixes and not self.is_text():
57 file_suffix = slide['title'].split('.')[-1]
58- if file_suffix.lower() not in suffix_list:
59+ if file_suffix.lower() not in suffixes:
60 self.is_valid = False
61 break
62
63=== modified file 'openlp/core/ui/media/mediacontroller.py'
64--- openlp/core/ui/media/mediacontroller.py 2019-05-05 05:59:29 +0000
65+++ openlp/core/ui/media/mediacontroller.py 2019-06-01 07:00:38 +0000
66@@ -44,7 +44,7 @@
67 from openlp.core.ui import DisplayControllerType
68 from openlp.core.ui.media import MediaState, ItemMediaInfo, MediaType, parse_optical_path
69 from openlp.core.ui.media.endpoint import media_endpoint
70-from openlp.core.ui.media.vlcplayer import VlcPlayer, get_vlc
71+from openlp.core.ui.media.vlcplayer import AUDIO_EXT, VIDEO_EXT, VlcPlayer, get_vlc
72
73
74 log = logging.getLogger(__name__)
75@@ -65,11 +65,6 @@
76 current_media_players is an array of player instances keyed on ControllerType.
77
78 """
79- def __init__(self, parent=None):
80- """
81- Constructor
82- """
83- super(MediaController, self).__init__(parent)
84
85 def setup(self):
86 self.vlc_player = None
87@@ -95,28 +90,8 @@
88 Registry().register_function('songs_hide', self.media_hide)
89 Registry().register_function('songs_blank', self.media_blank)
90 Registry().register_function('songs_unblank', self.media_unblank)
91- Registry().register_function('mediaitem_suffixes', self._generate_extensions_lists)
92 register_endpoint(media_endpoint)
93
94- def _generate_extensions_lists(self):
95- """
96- Set the active players and available media files
97- """
98- suffix_list = []
99- self.audio_extensions_list = []
100- if self.vlc_player.is_active:
101- for item in self.vlc_player.audio_extensions_list:
102- if item not in self.audio_extensions_list:
103- self.audio_extensions_list.append(item)
104- suffix_list.append(item[2:])
105- self.video_extensions_list = []
106- if self.vlc_player.is_active:
107- for item in self.vlc_player.video_extensions_list:
108- if item not in self.video_extensions_list:
109- self.video_extensions_list.append(item)
110- suffix_list.append(item[2:])
111- self.service_manager.supported_suffixes(suffix_list)
112-
113 def bootstrap_initialise(self):
114 """
115 Check to see if we have any media Player's available.
116@@ -131,7 +106,6 @@
117 else:
118 State().missing_text('media_live', translate('OpenLP.SlideController',
119 'VLC or pymediainfo are missing, so you are unable to play any media'))
120- self._generate_extensions_lists()
121 return True
122
123 def bootstrap_post_set_up(self):
124@@ -381,7 +355,7 @@
125 if file.is_file:
126 suffix = '*%s' % file.suffix.lower()
127 file = str(file)
128- if suffix in self.vlc_player.video_extensions_list:
129+ if suffix in VIDEO_EXT:
130 if not controller.media_info.is_background or controller.media_info.is_background and \
131 self.vlc_player.can_background:
132 self.resize(display, self.vlc_player)
133@@ -389,7 +363,7 @@
134 self.current_media_players[controller.controller_type] = self.vlc_player
135 controller.media_info.media_type = MediaType.Video
136 return True
137- if suffix in self.vlc_player.audio_extensions_list:
138+ if suffix in AUDIO_EXT:
139 if self.vlc_player.load(display, file):
140 self.current_media_players[controller.controller_type] = self.vlc_player
141 controller.media_info.media_type = MediaType.Audio
142
143=== modified file 'openlp/core/ui/media/mediaplayer.py'
144--- openlp/core/ui/media/mediaplayer.py 2019-05-03 17:26:37 +0000
145+++ openlp/core/ui/media/mediaplayer.py 2019-06-01 07:00:38 +0000
146@@ -38,13 +38,10 @@
147 self.parent = parent
148 self.name = name
149 self.available = self.check_available()
150- self.is_active = False
151 self.can_background = False
152 self.can_folder = False
153 self.state = {0: MediaState.Off, 1: MediaState.Off}
154 self.has_own_widget = False
155- self.audio_extensions_list = []
156- self.video_extensions_list = []
157
158 def check_available(self):
159 """
160@@ -166,12 +163,6 @@
161 """
162 return ''
163
164- def get_info(self):
165- """
166- Returns Information about the player
167- """
168- return ''
169-
170 def get_live_state(self):
171 """
172 Get the state of the live player
173
174=== modified file 'openlp/core/ui/media/vlcplayer.py'
175--- openlp/core/ui/media/vlcplayer.py 2019-05-22 16:47:20 +0000
176+++ openlp/core/ui/media/vlcplayer.py 2019-06-01 07:00:38 +0000
177@@ -33,7 +33,6 @@
178 from PyQt5 import QtWidgets
179
180 from openlp.core.common import is_linux, is_macosx, is_win
181-from openlp.core.common.i18n import translate
182 from openlp.core.common.settings import Settings
183 from openlp.core.ui.media import MediaState, MediaType
184 from openlp.core.ui.media.mediaplayer import MediaPlayer
185@@ -42,20 +41,18 @@
186 log = logging.getLogger(__name__)
187
188 # Audio and video extensions copied from 'include/vlc_interface.h' from vlc 2.2.0 source
189-AUDIO_EXT = ['*.3ga', '*.669', '*.a52', '*.aac', '*.ac3', '*.adt', '*.adts', '*.aif', '*.aifc', '*.aiff', '*.amr',
190- '*.aob', '*.ape', '*.awb', '*.caf', '*.dts', '*.flac', '*.it', '*.kar', '*.m4a', '*.m4b', '*.m4p', '*.m5p',
191- '*.mid', '*.mka', '*.mlp', '*.mod', '*.mpa', '*.mp1', '*.mp2', '*.mp3', '*.mpc', '*.mpga', '*.mus',
192- '*.oga', '*.ogg', '*.oma', '*.opus', '*.qcp', '*.ra', '*.rmi', '*.s3m', '*.sid', '*.spx', '*.thd', '*.tta',
193- '*.voc', '*.vqf', '*.w64', '*.wav', '*.wma', '*.wv', '*.xa', '*.xm']
194+AUDIO_EXT = ('3ga', '669', 'a52', 'aac', 'ac3', 'adt', 'adts', 'aif', 'aifc', 'aiff', 'amr', 'aob', 'ape', 'awb', 'caf',
195+ 'dts', 'flac', 'it', 'kar', 'm4a', 'm4b', 'm4p', 'm5p', 'mid', 'mka', 'mlp', 'mod', 'mpa', 'mp1', 'mp2',
196+ 'mp3', 'mpc', 'mpga', 'mus', 'oga', 'ogg', 'oma', 'opus', 'qcp', 'ra', 'rmi', 's3m', 'sid', 'spx', 'thd',
197+ 'tta', 'voc', 'vqf', 'w64', 'wav', 'wma', 'wv', 'xa', 'xm')
198
199-VIDEO_EXT = ['*.3g2', '*.3gp', '*.3gp2', '*.3gpp', '*.amv', '*.asf', '*.avi', '*.bik', '*.divx', '*.drc', '*.dv',
200- '*.f4v', '*.flv', '*.gvi', '*.gxf', '*.iso', '*.m1v', '*.m2v', '*.m2t', '*.m2ts', '*.m4v', '*.mkv',
201- '*.mov', '*.mp2', '*.mp2v', '*.mp4', '*.mp4v', '*.mpe', '*.mpeg', '*.mpeg1', '*.mpeg2', '*.mpeg4', '*.mpg',
202- '*.mpv2', '*.mts', '*.mtv', '*.mxf', '*.mxg', '*.nsv', '*.nuv', '*.ogg', '*.ogm', '*.ogv', '*.ogx', '*.ps',
203- '*.rec', '*.rm', '*.rmvb', '*.rpl', '*.thp', '*.tod', '*.ts', '*.tts', '*.txd', '*.vob', '*.vro', '*.webm',
204- '*.wm', '*.wmv', '*.wtv', '*.xesc',
205+VIDEO_EXT = ('3g2', '3gp', '3gp2', '3gpp', 'amv', 'asf', 'avi', 'bik', 'divx', 'drc', 'dv', 'f4v', 'flv', 'gvi', 'gxf',
206+ 'iso', 'm1v', 'm2v', 'm2t', 'm2ts', 'm4v', 'mkv', 'mov', 'mp2', 'mp2v', 'mp4', 'mp4v', 'mpe', 'mpeg',
207+ 'mpeg1', 'mpeg2', 'mpeg4', 'mpg', 'mpv2', 'mts', 'mtv', 'mxf', 'mxg', 'nsv', 'nuv', 'ogg', 'ogm', 'ogv',
208+ 'ogx', 'ps', 'rec', 'rm', 'rmvb', 'rpl', 'thp', 'tod', 'ts', 'tts', 'txd', 'vob', 'vro', 'webm', 'wm',
209+ 'wmv', 'wtv', 'xesc',
210 # These extensions was not in the official list, added manually.
211- '*.nut', '*.rv', '*.xvid']
212+ 'nut', 'rv', 'xvid')
213
214
215 def get_vlc():
216@@ -109,8 +106,6 @@
217 self.display_name = '&VLC'
218 self.parent = parent
219 self.can_folder = True
220- self.audio_extensions_list = AUDIO_EXT
221- self.video_extensions_list = VIDEO_EXT
222
223 def setup(self, output_display, live_display):
224 """
225@@ -374,14 +369,3 @@
226 else:
227 controller.seek_slider.setSliderPosition(output_display.vlc_media_player.get_time())
228 controller.seek_slider.blockSignals(False)
229-
230- def get_info(self):
231- """
232- Return some information about this player
233- """
234- return(translate('Media.player', 'VLC is an external player which '
235- 'supports a number of different formats.') +
236- '<br/> <strong>' + translate('Media.player', 'Audio') +
237- '</strong><br/>' + str(AUDIO_EXT) + '<br/><strong>' +
238- translate('Media.player', 'Video') + '</strong><br/>' +
239- str(VIDEO_EXT) + '<br/>')
240
241=== modified file 'openlp/core/ui/servicemanager.py'
242--- openlp/core/ui/servicemanager.py 2019-05-24 18:50:51 +0000
243+++ openlp/core/ui/servicemanager.py 2019-06-01 07:00:38 +0000
244@@ -48,6 +48,7 @@
245 from openlp.core.lib.serviceitem import ItemCapabilities, ServiceItem
246 from openlp.core.lib.ui import create_widget_action, critical_error_message_box, find_and_set_in_combo_box
247 from openlp.core.ui.icons import UiIcons
248+from openlp.core.ui.media.vlcplayer import AUDIO_EXT, VIDEO_EXT
249 from openlp.core.ui.serviceitemeditform import ServiceItemEditForm
250 from openlp.core.ui.servicenoteform import ServiceNoteForm
251 from openlp.core.ui.starttimeform import StartTimeForm
252@@ -320,7 +321,8 @@
253 """
254 super().__init__(parent)
255 self.service_items = []
256- self.suffixes = []
257+ self.suffixes = set()
258+ self.add_media_suffixes()
259 self.drop_position = -1
260 self.service_id = 0
261 # is a new service and has not been saved
262@@ -347,6 +349,13 @@
263 self.service_item_edit_form = ServiceItemEditForm()
264 self.start_time_form = StartTimeForm()
265
266+ def add_media_suffixes(self):
267+ """
268+ Add the suffixes supported by :mod:`openlp.core.ui.media.vlcplayer`
269+ """
270+ self.suffixes.update(AUDIO_EXT)
271+ self.suffixes.update(VIDEO_EXT)
272+
273 def set_modified(self, modified=True):
274 """
275 Setter for property "modified". Sets whether or not the current service has been modified.
276@@ -401,22 +410,19 @@
277 def reset_supported_suffixes(self):
278 """
279 Resets the Suffixes list.
280-
281 """
282- self.suffixes = []
283+ self.suffixes.clear()
284
285 def supported_suffixes(self, suffix_list):
286 """
287 Adds Suffixes supported to the master list. Called from Plugins.
288
289- :param suffix_list: New Suffix's to be supported
290+ :param list[str] | str suffix_list: New suffix(s) to be supported
291 """
292 if isinstance(suffix_list, str):
293- self.suffixes.append(suffix_list)
294+ self.suffixes.add(suffix_list)
295 else:
296- for suffix in suffix_list:
297- if suffix not in self.suffixes:
298- self.suffixes.append(suffix)
299+ self.suffixes.update(suffix_list)
300
301 def on_new_service_clicked(self):
302 """
303@@ -475,9 +481,11 @@
304 QtWidgets.QMessageBox.Save | QtWidgets.QMessageBox.Discard |
305 QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Save)
306
307- def on_recent_service_clicked(self):
308+ def on_recent_service_clicked(self, checked):
309 """
310 Load a recent file as the service triggered by mainwindow recent service list.
311+
312+ :param bool checked: Not used
313 """
314 if self.is_modified():
315 result = self.save_modified_service()
316
317=== modified file 'openlp/core/ui/themeform.py'
318--- openlp/core/ui/themeform.py 2019-05-22 06:47:00 +0000
319+++ openlp/core/ui/themeform.py 2019-06-01 07:00:38 +0000
320@@ -32,7 +32,6 @@
321 from openlp.core.common.registry import Registry
322 from openlp.core.lib.theme import BackgroundGradientType, BackgroundType
323 from openlp.core.lib.ui import critical_error_message_box
324-# TODO: Fix this. Use a "get_video_extensions" method which uses the current media player
325 from openlp.core.ui.media.vlcplayer import VIDEO_EXT
326 from openlp.core.ui.themelayoutform import ThemeLayoutForm
327 from openlp.core.ui.themewizard import Ui_ThemeWizard
328@@ -76,9 +75,8 @@
329 self.image_path_edit.filters = \
330 '{name};;{text} (*)'.format(name=get_images_filter(), text=UiStrings().AllFiles)
331 self.image_path_edit.pathChanged.connect(self.on_image_path_edit_path_changed)
332- # TODO: Should work
333- visible_formats = '({name})'.format(name='; '.join(VIDEO_EXT))
334- actual_formats = '({name})'.format(name=' '.join(VIDEO_EXT))
335+ visible_formats = '(*.{name})'.format(name='; *.'.join(VIDEO_EXT))
336+ actual_formats = '(*.{name})'.format(name=' *.'.join(VIDEO_EXT))
337 video_filter = '{trans} {visible} {actual}'.format(trans=translate('OpenLP', 'Video Files'),
338 visible=visible_formats, actual=actual_formats)
339 self.video_path_edit.filters = '{video};;{ui} (*)'.format(video=video_filter, ui=UiStrings().AllFiles)
340
341=== modified file 'openlp/plugins/media/lib/mediaitem.py'
342--- openlp/plugins/media/lib/mediaitem.py 2019-05-03 17:26:37 +0000
343+++ openlp/plugins/media/lib/mediaitem.py 2019-06-01 07:00:38 +0000
344@@ -38,7 +38,7 @@
345 from openlp.core.lib.ui import critical_error_message_box
346 from openlp.core.ui.icons import UiIcons
347 from openlp.core.ui.media import parse_optical_path, format_milliseconds
348-from openlp.core.ui.media.vlcplayer import get_vlc
349+from openlp.core.ui.media.vlcplayer import AUDIO_EXT, VIDEO_EXT, get_vlc
350
351
352 if get_vlc() is not None:
353@@ -232,9 +232,9 @@
354 """
355 # self.populate_display_types()
356 self.on_new_file_masks = translate('MediaPlugin.MediaItem',
357- 'Videos ({video});;Audio ({audio});;{files} '
358- '(*)').format(video=' '.join(self.media_controller.video_extensions_list),
359- audio=' '.join(self.media_controller.audio_extensions_list),
360+ 'Videos (*.{video});;Audio (*.{audio});;{files} '
361+ '(*)').format(video=' *.'.join(VIDEO_EXT),
362+ audio=' *.'.join(AUDIO_EXT),
363 files=UiStrings().AllFiles)
364
365 def on_delete_click(self):
366@@ -301,9 +301,9 @@
367 media_file_paths = Settings().value(self.settings_section + '/media files')
368 media_file_paths.sort(key=lambda file_path: get_natural_key(file_path.name))
369 if media_type == MediaType.Audio:
370- extension = self.media_controller.audio_extensions_list
371+ extension = AUDIO_EXT
372 else:
373- extension = self.media_controller.video_extensions_list
374+ extension = VIDEO_EXT
375 extension = [x[1:] for x in extension]
376 media = [x for x in media_file_paths if x.suffix in extension]
377 return media
378
379=== modified file 'tests/functional/openlp_core/common/test_path.py'
380--- tests/functional/openlp_core/common/test_path.py 2019-05-23 19:49:13 +0000
381+++ tests/functional/openlp_core/common/test_path.py 2019-06-01 07:00:38 +0000
382@@ -22,7 +22,6 @@
383 """
384 Package to test the openlp.core.common.path package.
385 """
386-# TODO: fix patches
387 import os
388 from pathlib import Path
389 from unittest import TestCase
390
391=== modified file 'tests/functional/openlp_core/ui/media/test_mediacontroller.py'
392--- tests/functional/openlp_core/ui/media/test_mediacontroller.py 2019-04-13 13:00:22 +0000
393+++ tests/functional/openlp_core/ui/media/test_mediacontroller.py 2019-06-01 07:00:38 +0000
394@@ -27,7 +27,6 @@
395
396 from openlp.core.common.registry import Registry
397 from openlp.core.ui.media.mediacontroller import MediaController
398-from openlp.core.ui.media.vlcplayer import VlcPlayer
399 from tests.helpers.testmixin import TestMixin
400
401 from tests.utils.constants import RESOURCE_PATH
402@@ -43,26 +42,6 @@
403 Registry.create()
404 Registry().register('service_manager', MagicMock())
405
406- def test_generate_extensions_lists(self):
407- """
408- Test that the extensions are create correctly
409- """
410- # GIVEN: A MediaController and an active player with audio and video extensions
411- media_controller = MediaController()
412- media_controller.vlc_player = VlcPlayer(None)
413- media_controller.vlc_player.is_active = True
414- media_controller.vlc_player.audio_extensions_list = ['*.mp3', '*.wav', '*.wma', '*.ogg']
415- media_controller.vlc_player.video_extensions_list = ['*.mp4', '*.mov', '*.avi', '*.ogm']
416-
417- # WHEN: calling _generate_extensions_lists
418- media_controller._generate_extensions_lists()
419-
420- # THEN: extensions list should have been copied from the player to the mediacontroller
421- assert media_controller.video_extensions_list == media_controller.video_extensions_list, \
422- 'Video extensions should be the same'
423- assert media_controller.audio_extensions_list == media_controller.audio_extensions_list, \
424- 'Audio extensions should be the same'
425-
426 def test_resize(self):
427 """
428 Test that the resize method is called correctly
429
430=== modified file 'tests/functional/openlp_core/ui/media/test_vlcplayer.py'
431--- tests/functional/openlp_core/ui/media/test_vlcplayer.py 2019-05-08 13:58:06 +0000
432+++ tests/functional/openlp_core/ui/media/test_vlcplayer.py 2019-06-01 07:00:38 +0000
433@@ -30,7 +30,7 @@
434
435 from openlp.core.common.registry import Registry
436 from openlp.core.ui.media import MediaState, MediaType
437-from openlp.core.ui.media.vlcplayer import AUDIO_EXT, VIDEO_EXT, VlcPlayer, get_vlc
438+from openlp.core.ui.media.vlcplayer import VlcPlayer, get_vlc
439 from tests.helpers import MockDateTime
440 from tests.helpers.testmixin import TestMixin
441
442@@ -95,8 +95,6 @@
443 assert '&VLC' == vlc_player.display_name
444 assert vlc_player.parent is None
445 assert vlc_player.can_folder is True
446- assert AUDIO_EXT == vlc_player.audio_extensions_list
447- assert VIDEO_EXT == vlc_player.video_extensions_list
448
449 @patch('openlp.core.ui.media.vlcplayer.is_win')
450 @patch('openlp.core.ui.media.vlcplayer.is_macosx')
451@@ -958,20 +956,3 @@
452 mocked_controller.seek_slider.setSliderPosition.assert_called_with(300)
453 expected_calls = [call(True), call(False)]
454 assert expected_calls == mocked_controller.seek_slider.blockSignals.call_args_list
455-
456- @patch('openlp.core.ui.media.vlcplayer.translate')
457- def test_get_info(self, mocked_translate):
458- """
459- Test that get_info() returns some information about the VLC player
460- """
461- # GIVEN: A VlcPlayer
462- mocked_translate.side_effect = lambda *x: x[1]
463- vlc_player = VlcPlayer(None)
464-
465- # WHEN: get_info() is run
466- info = vlc_player.get_info()
467-
468- # THEN: The information should be correct
469- assert 'VLC is an external player which supports a number of different formats.<br/> ' \
470- '<strong>Audio</strong><br/>' + str(AUDIO_EXT) + '<br/><strong>Video</strong><br/>' + \
471- str(VIDEO_EXT) + '<br/>' == info