From 2ea94a4d21412ed3634d5aa5116a1d87aebf8e28 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Thu, 11 Nov 2021 08:00:19 +0100 Subject: [PATCH] cdrom: Always test generic implementation --- picard/util/cdrom.py | 18 ++++++++++-------- test/test_util_cdrom.py | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/picard/util/cdrom.py b/picard/util/cdrom.py index ff2b19f55..287df53ef 100644 --- a/picard/util/cdrom.py +++ b/picard/util/cdrom.py @@ -56,6 +56,15 @@ if discid is not None: LINUX_CDROM_INFO = '/proc/sys/dev/cdrom/info' +def _generic_iter_drives(): + config = get_config() + yield from ( + device.strip() for device + in config.setting["cd_lookup_device"].split(",") + if device and not device.isspace() + ) + + def _parse_linux_cdrom_info(f): drive_names = [] drive_audio_caps = [] @@ -106,14 +115,7 @@ else: # There might be more drives we couldn't detect # setting uses a text field instead of a drop-down AUTO_DETECT_DRIVES = False - - def _iter_drives(): - config = get_config() - yield from ( - device.strip() for device - in config.setting["cd_lookup_device"].split(",") - if device and not device.isspace() - ) + _iter_drives = _generic_iter_drives def get_cdrom_drives(): diff --git a/test/test_util_cdrom.py b/test/test_util_cdrom.py index a8debed4c..34521cbd3 100644 --- a/test/test_util_cdrom.py +++ b/test/test_util_cdrom.py @@ -100,7 +100,21 @@ class GetCdromDrivesTest(PicardTestCase): def test_get_cdrom_drives(self): self.set_config_values({"cd_lookup_device": "/dev/cdrom"}) - self.assertIsInstance(cdrom.get_cdrom_drives(), Iterable) + # Independent of the implementation get_cdrom_drives must not rais + # and return an Iterable. + drives = cdrom.get_cdrom_drives() + self.assertIsInstance(drives, Iterable) + self.assertTrue(set(cdrom.DEFAULT_DRIVES).issubset(drives)) + + def test_generic_iter_drives(self): + self.set_config_values({"cd_lookup_device": "/dev/cdrom"}) + self.assertEqual(["/dev/cdrom"], list(cdrom._generic_iter_drives())) + self.set_config_values({"cd_lookup_device": "/dev/cdrom, /dev/sr0"}) + self.assertEqual(["/dev/cdrom", "/dev/sr0"], list(cdrom._generic_iter_drives())) + self.set_config_values({"cd_lookup_device": ""}) + self.assertEqual([], list(cdrom._generic_iter_drives())) + self.set_config_values({"cd_lookup_device": " ,, ,\t, "}) + self.assertEqual([], list(cdrom._generic_iter_drives())) @unittest.skipUnless(IS_WIN, "windows test")