1616
1717# There are some issue with assertLog for python version lower than 3.10,
1818# https://github.com/python/cpython/commit/6fdfcec5b11f44f27aae3d53ddeb004150ae1f61
19- # and make some duplicate code in this script.
20- # Therefore, please don't add new test cases of assertLog
21- # and the old one might be removed in the future.
19+ # Therefore, please don't add new test cases of assertLog.
2220
2321import unittest
2422import sys
@@ -112,59 +110,41 @@ def test_fail(self):
112110 pt = PipewireTest ()
113111
114112 # return UNKNOWN TYPE
115- if sys .version_info < (3 , 10 ):
116- wrong_type1 = "videog"
117- wrong_type2 = "xxxx"
118- self .assertEqual ("UNKNOWN TYPE" ,
119- pt .generate_pw_media_class (wrong_type1 ,
120- "source" ))
121- self .assertEqual ("UNKNOWN TYPE" ,
122- pt .generate_pw_media_class (wrong_type2 ,
123- "sources" ))
124- return
125-
126- with self .assertLogs ("root" , level = "INFO" ) as cm :
127- wrong_type1 = "videog"
128- wrong_type2 = "xxxx"
129- self .assertEqual ("UNKNOWN TYPE" ,
130- pt .generate_pw_media_class (wrong_type1 ,
131- "source" ))
132- self .assertEqual ("UNKNOWN TYPE" ,
133- pt .generate_pw_media_class (wrong_type2 ,
134- "sources" ))
135- # check log output
136- self .assertEqual (cm .output ,
137- ["INFO:root:Media type:[{}] is unknown"
138- .format (wrong_type1 ),
139- "INFO:root:Media type:[{}] is unknown"
140- .format (wrong_type2 )])
113+ wrong_type1 = "videog"
114+ wrong_type2 = "xxxx"
115+ self .assertEqual ("UNKNOWN TYPE" ,
116+ pt .generate_pw_media_class (wrong_type1 ,
117+ "source" ))
118+ self .assertEqual ("UNKNOWN TYPE" ,
119+ pt .generate_pw_media_class (wrong_type2 ,
120+ "sources" ))
121+
122+ # example code for testing log output in python 3.10 and above
123+ # with self.assertLogs("root", level="INFO") as cm:
124+ # wrong_type1 = "videog"
125+ # wrong_type2 = "xxxx"
126+ # self.assertEqual("UNKNOWN TYPE",
127+ # pt.generate_pw_media_class(wrong_type1,
128+ # "source"))
129+ # self.assertEqual("UNKNOWN TYPE",
130+ # pt.generate_pw_media_class(wrong_type2,
131+ # "sources"))
132+ # # check log output
133+ # self.assertEqual(cm.output,
134+ # ["INFO:root:Media type:[{}] is unknown"
135+ # .format(wrong_type1),
136+ # "INFO:root:Media type:[{}] is unknown"
137+ # .format(wrong_type2)])
141138
142139 # return UNKNOWN CLASS
143- if sys .version_info < (3 , 10 ):
144- wrong_class1 = "sourceg"
145- wrong_class2 = "sinkf"
146- self .assertEqual ("UNKNOWN CLASS" ,
147- pt .generate_pw_media_class ("video" ,
148- wrong_class1 ))
149- self .assertEqual ("UNKNOWN CLASS" ,
150- pt .generate_pw_media_class ("video" ,
151- wrong_class2 ))
152- return
153- with self .assertLogs ("root" , level = "INFO" ) as cm :
154- wrong_class1 = "sourceg"
155- wrong_class2 = "sinkf"
156- self .assertEqual ("UNKNOWN CLASS" ,
157- pt .generate_pw_media_class ("video" ,
158- wrong_class1 ))
159- self .assertEqual ("UNKNOWN CLASS" ,
160- pt .generate_pw_media_class ("video" ,
161- wrong_class2 ))
162- # check log output
163- self .assertEqual (cm .output ,
164- ["INFO:root:Media class:[{}] is unknown"
165- .format (wrong_class1 ),
166- "INFO:root:Media class:[{}] is unknown"
167- .format (wrong_class2 )])
140+ wrong_class1 = "sourceg"
141+ wrong_class2 = "sinkf"
142+ self .assertEqual ("UNKNOWN CLASS" ,
143+ pt .generate_pw_media_class ("video" ,
144+ wrong_class1 ))
145+ self .assertEqual ("UNKNOWN CLASS" ,
146+ pt .generate_pw_media_class ("video" ,
147+ wrong_class2 ))
168148
169149
170150class DetectDeviceTests (unittest .TestCase ):
@@ -242,80 +222,34 @@ class DetectDeviceTests(unittest.TestCase):
242222 def test_succ (self , mock_checkout ):
243223 pt = PipewireTest ()
244224
245- if sys .version_info < (3 , 10 ):
246- # detect audio sink succ
247- mock_checkout .return_value = self .sink_audio_node
248- self .assertEqual (PipewireTestError .NO_ERROR ,
249- pt .detect_device ("audio" , "sink" ))
250-
251- # detect audio source succ
252- mock_checkout .return_value = self .source_audio_node
253- self .assertEqual (PipewireTestError .NO_ERROR ,
254- pt .detect_device ("audio" , "source" ))
255- return
256- with self .assertLogs ("root" , level = "INFO" ) as cm :
257- # detect audio sink succ
258- mock_checkout .return_value = self .sink_audio_node
259- self .assertEqual (PipewireTestError .NO_ERROR ,
260- pt .detect_device ("audio" , "sink" ))
261-
262- # detect audio source succ
263- mock_checkout .return_value = self .source_audio_node
264- self .assertEqual (PipewireTestError .NO_ERROR ,
265- pt .detect_device ("audio" , "source" ))
266-
267- # check log output
268- self .assertEqual (cm .output ,
269- ["INFO:root:device id:[29]"
270- " media.class:[Audio/Sink]"
271- " node.name:[Freewheel-Driver]" ,
272- "INFO:root:device id:[30]"
273- " media.class:[Audio/Source]"
274- " node.name:[Freewheel-Driver]" ])
225+ # detect audio sink succ
226+ mock_checkout .return_value = self .sink_audio_node
227+ self .assertEqual (PipewireTestError .NO_ERROR ,
228+ pt .detect_device ("audio" , "sink" ))
229+
230+ # detect audio source succ
231+ mock_checkout .return_value = self .source_audio_node
232+ self .assertEqual (PipewireTestError .NO_ERROR ,
233+ pt .detect_device ("audio" , "source" ))
275234
276235 @patch ("subprocess.check_output" )
277236 def test_fail (self , mock_checkout ):
278237 pt = PipewireTest ()
279238
280- if sys .version_info < (3 , 10 ):
281- # detect audio sink fail
282- mock_checkout .return_value = self .source_audio_node
283- self .assertEqual (PipewireTestError .NOT_DETECTED ,
284- pt .detect_device ("audio" , "sink" ))
285-
286- # detect audio source fail
287- mock_checkout .return_value = self .sink_audio_node
288- self .assertEqual (PipewireTestError .NOT_DETECTED ,
289- pt .detect_device ("audio" , "source" ))
290-
291- # wrong media class
292- mock_checkout .return_value = self .sink_audio_node
293- self .assertEqual (PipewireTestError .NOT_DETECTED ,
294- pt .detect_device ("xxx" , "ooo" ))
295- return
296- with self .assertLogs ("root" , level = "INFO" ) as cm :
297- # detect audio sink fail
298- mock_checkout .return_value = self .source_audio_node
299- self .assertEqual (PipewireTestError .NOT_DETECTED ,
300- pt .detect_device ("audio" , "sink" ))
301-
302- # detect audio source fail
303- mock_checkout .return_value = self .sink_audio_node
304- self .assertEqual (PipewireTestError .NOT_DETECTED ,
305- pt .detect_device ("audio" , "source" ))
306-
307- # wrong media class
308- mock_checkout .return_value = self .sink_audio_node
309- self .assertEqual (PipewireTestError .NOT_DETECTED ,
310- pt .detect_device ("xxx" , "ooo" ))
311-
312- # check log output
313- self .assertEqual (cm .output ,
314- ["INFO:root:"
315- "media.class:[Audio/Sink] couldn't find" ,
316- "INFO:root:"
317- "media.class:[Audio/Source] couldn't find" ,
318- "INFO:root:Media type:[xxx] is unknown" ])
239+ # detect audio sink fail
240+ mock_checkout .return_value = self .source_audio_node
241+ self .assertEqual (PipewireTestError .NOT_DETECTED ,
242+ pt .detect_device ("audio" , "sink" ))
243+
244+ # detect audio source fail
245+ mock_checkout .return_value = self .sink_audio_node
246+ self .assertEqual (PipewireTestError .NOT_DETECTED ,
247+ pt .detect_device ("audio" , "source" ))
248+
249+ # wrong media class
250+ mock_checkout .return_value = self .sink_audio_node
251+ self .assertEqual (PipewireTestError .NOT_DETECTED ,
252+ pt .detect_device ("xxx" , "ooo" ))
319253
320254
321255class SelectDeviceTests (unittest .TestCase ):
@@ -360,20 +294,9 @@ class SelectDeviceTests(unittest.TestCase):
360294 def test_wrong_pw_dump (self , mock_checkout ):
361295 pt = PipewireTest ()
362296
363- if sys .version_info < (3 , 10 ):
364- mock_checkout .return_value = "xxxx"
365- self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
366- pt .select_device ("video" , "sink" , "hdmi" ))
367- return
368- with self .assertLogs ("root" , level = "INFO" ) as cm :
369- mock_checkout .return_value = "xxxx"
370- self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
371- pt .select_device ("video" , "sink" , "hdmi" ))
372-
373- # check log output
374- self .assertEqual (cm .output ,
375- ["ERROR:root:pw-dump Node failed !!!" ,
376- "ERROR:root:No available Video/Sink found" ])
297+ mock_checkout .return_value = "xxxx"
298+ self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
299+ pt .select_device ("video" , "sink" , "hdmi" ))
377300
378301 @patch ("subprocess.check_output" )
379302 def test_no_available_node (self , mock_checkout ):
@@ -385,19 +308,9 @@ def test_no_available_node(self, mock_checkout):
385308 self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
386309 pt .select_device ("video" , "xxx" , "hdmi" ))
387310
388- if sys .version_info < (3 , 10 ):
389- mock_checkout .return_value = self .sink_audio_node
390- self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
391- pt .select_device ("video" , "sink" , "hdmi" ))
392- return
393- with self .assertLogs ("root" , level = "INFO" ) as cm :
394- mock_checkout .return_value = self .sink_audio_node
395- self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
396- pt .select_device ("video" , "sink" , "hdmi" ))
397-
398- # check log output
399- self .assertEqual (cm .output ,
400- ["ERROR:root:No available Video/Sink found" ])
311+ mock_checkout .return_value = self .sink_audio_node
312+ self .assertEqual (PipewireTestError .NO_AVAILABLE_PORT ,
313+ pt .select_device ("video" , "sink" , "hdmi" ))
401314
402315 @patch ("builtins.input" )
403316 @patch ("subprocess.check_output" )
@@ -465,48 +378,19 @@ class GstPipeLineTests(unittest.TestCase):
465378 def test_wrong_gst_pipeline_device (self , mock_checkout ):
466379 pt = PipewireTest ()
467380
468- if sys .version_info < (3 , 10 ):
469- mock_checkout .return_value = self .device
470- self .assertEqual (PipewireTestError .NO_SPECIFIC_DEVICE ,
471- pt .gst_pipeline ("pipe" , 10 , "qoo" ))
472- return
473- with self .assertLogs ("root" , level = "INFO" ) as cm :
474- mock_checkout .return_value = self .device
475- self .assertEqual (PipewireTestError .NO_SPECIFIC_DEVICE ,
476- pt .gst_pipeline ("pipe" , 10 , "qoo" ))
477-
478- # check log output
479- self .assertEqual (cm .output ,
480- ["ERROR:root:No abailable output device for qoo" ])
381+ mock_checkout .return_value = self .device
382+ self .assertEqual (PipewireTestError .NO_SPECIFIC_DEVICE ,
383+ pt .gst_pipeline ("pipe" , 10 , "qoo" ))
481384
482385 @patch ("subprocess.check_output" )
483386 def test_gst_pipeline (self , mock_checkout ):
484387 pt = PipewireTest ()
485388
486- if sys .version_info < (3 , 10 ):
487- mock_checkout .return_value = self .device
488- self .assertEqual (PipewireTestError .NO_ERROR ,
489- pt .gst_pipeline ("audiotestsrc wave=sine freq=512"
490- " ! audioconvert ! audioresample"
491- " ! autoaudiosink" , 2 , "hdmi" ))
492- return
493- with self .assertLogs ("root" , level = "INFO" ) as cm :
494- mock_checkout .return_value = self .device
495- self .assertEqual (PipewireTestError .NO_ERROR ,
496- pt .gst_pipeline ("audiotestsrc wave=sine freq=512"
497- " ! audioconvert ! audioresample"
498- " ! autoaudiosink" , 2 , "hdmi" ))
499-
500- # check log output
501- self .assertEqual (cm .output ,
502- ["INFO:root:" + "[ Audio sink ]" .center (80 , '=' ),
503- "INFO:root:Device: [hdmi demo output] "
504- "availavle: [yes]" ,
505- "INFO:root:Attempting to initialize Gstreamer "
506- "pipeline: audiotestsrc wave=sine freq=512 ! "
507- "audioconvert ! audioresample ! autoaudiosink" ,
508- "INFO:root:Pipeline initialized, now starting "
509- "playback." ])
389+ mock_checkout .return_value = self .device
390+ self .assertEqual (PipewireTestError .NO_ERROR ,
391+ pt .gst_pipeline ("audiotestsrc wave=sine freq=512"
392+ " ! audioconvert ! audioresample"
393+ " ! autoaudiosink" , 2 , "hdmi" ))
510394
511395
512396class MonitorActivePortTests (unittest .TestCase ):
@@ -599,47 +483,17 @@ class MonitorActivePortTests(unittest.TestCase):
599483 def test_couldnt_detect_change (self , mock_checkout ):
600484 pt = PipewireTest ()
601485
602- if sys .version_info < (3 , 10 ):
603- mock_checkout .return_value = self .before_device
604- self .assertEqual (PipewireTestError .NO_CHANGE_DETECTED ,
605- pt .monitor_active_port_change (2 , "sink" ))
606- return
607- with self .assertLogs ("root" , level = "INFO" ) as cm :
608- mock_checkout .return_value = self .before_device
609- self .assertEqual (PipewireTestError .NO_CHANGE_DETECTED ,
610- pt .monitor_active_port_change (2 , "sink" ))
611-
612- # check log output
613- self .assertEqual (cm .output ,
614- ["INFO:root:Starting with config: "
615- "{('sink #29', 'hdmi_demo_output', 'yes')}" ,
616- "INFO:root:"
617- "You have 2 seconds to plug the item in" ,
618- "INFO:root:Couldn't detect active port change!" ])
486+ mock_checkout .return_value = self .before_device
487+ self .assertEqual (PipewireTestError .NO_CHANGE_DETECTED ,
488+ pt .monitor_active_port_change (2 , "sink" ))
619489
620490 @patch ("subprocess.check_output" )
621491 def test_could_detect_change (self , mock_checkout ):
622492 pt = PipewireTest ()
623493
624- if sys .version_info < (3 , 10 ):
625- mock_checkout .side_effect = [self .before_device , self .after_device ]
626- self .assertEqual (PipewireTestError .NO_ERROR ,
627- pt .monitor_active_port_change (2 , "sink" ))
628- return
629- with self .assertLogs ("root" , level = "INFO" ) as cm :
630- mock_checkout .side_effect = [self .before_device , self .after_device ]
631- self .assertEqual (PipewireTestError .NO_ERROR ,
632- pt .monitor_active_port_change (2 , "sink" ))
633-
634- # check log output
635- self .assertEqual (cm .output ,
636- ["INFO:root:Starting with config: "
637- "{('sink #29', 'hdmi_demo_output', 'yes')}" ,
638- "INFO:root:"
639- "You have 2 seconds to plug the item in" ,
640- "INFO:root:Now using config: "
641- "{('sink #29', 'hdmi_after_output', 'yes')}" ,
642- "INFO:root:It seems to work!" ])
494+ mock_checkout .side_effect = [self .before_device , self .after_device ]
495+ self .assertEqual (PipewireTestError .NO_ERROR ,
496+ pt .monitor_active_port_change (2 , "sink" ))
643497
644498
645499class GoThroughPortTests (unittest .TestCase ):
@@ -691,23 +545,9 @@ class GoThroughPortTests(unittest.TestCase):
691545 def test_though (self , mock_checkout , mock_input ):
692546 pt = PipewireTest ()
693547
694- if sys .version_info < (3 , 10 ):
695- mock_checkout .return_value = self .device
696- mock_input .side_effect = ["yes" , "yes" ]
697- self .assertEqual (None , pt .go_through_ports ("echo test" , "sink" ))
698- return
699- with self .assertLogs ("root" , level = "INFO" ) as cm :
700- mock_checkout .return_value = self .device
701- mock_input .side_effect = ["yes" , "yes" ]
702- self .assertEqual (None , pt .go_through_ports ("echo test" , "sink" ))
703-
704- # check log output
705- self .assertEqual (cm .output ,
706- [("INFO:root:Please select [hdmi demo output] "
707- "for testing (if selected, please enter 'yes')" ),
708- "INFO:root:test" ,
709- ("INFO:root:"
710- "Is working ? please enter 'yes' to leave" )])
548+ mock_checkout .return_value = self .device
549+ mock_input .side_effect = ["yes" , "yes" ]
550+ self .assertEqual (None , pt .go_through_ports ("echo test" , "sink" ))
711551
712552
713553class ArgsParsingTests (unittest .TestCase ):
0 commit comments