From 3ba7e2ca9452c4d9a78919a9ad4253e0370385a4 Mon Sep 17 00:00:00 2001 From: Fernando Bravo <39527354+fernando79513@users.noreply.github.com> Date: Mon, 16 Sep 2024 22:58:43 +0200 Subject: [PATCH] Fixed issue with USB string comparison (BugFix) (#1477) * Fixed issue with usb string comparison * Fixed black issues --- .../checkbox_support/scripts/run_watcher.py | 2 +- .../tests/test_run_watcher.py | 42 ++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/checkbox-support/checkbox_support/scripts/run_watcher.py b/checkbox-support/checkbox_support/scripts/run_watcher.py index 7de27780b3..376c159977 100644 --- a/checkbox-support/checkbox_support/scripts/run_watcher.py +++ b/checkbox-support/checkbox_support/scripts/run_watcher.py @@ -249,7 +249,7 @@ def _parse_journal_line(self, line_str): ).group(1) # Look for insertion action - if "USB Mass Storage device detected" or "uas" in line_str: + if "USB Mass Storage device detected" in line_str or "uas" in line_str: self.action = "insertion" # Look for removal action diff --git a/checkbox-support/checkbox_support/tests/test_run_watcher.py b/checkbox-support/checkbox_support/tests/test_run_watcher.py index 44b865593b..1163783a18 100644 --- a/checkbox-support/checkbox_support/tests/test_run_watcher.py +++ b/checkbox-support/checkbox_support/tests/test_run_watcher.py @@ -282,50 +282,64 @@ def test_usb_storage_no_removal(self): USBStorage._validate_removal(mock_usb_storage) def test_usb_storage_parse_journal_line(self): - mock_usb_storage = MagicMock() - line_str = "new high-speed USB device" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.device, "high_speed_usb") line_str = "new SuperSpeed USB device" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.device, "super_speed_usb") line_str = "new SuperSpeed Gen 1 USB device" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.device, "super_speed_gen1_usb") line_str = "new SuperSpeed Plus Gen 2x1 USB device" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual( mock_usb_storage.device, "super_speed_plus_gen2x1_usb" ) line_str = "new high-speed USB device number 1 using ehci_hcd" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.driver, "ehci_hcd") line_str = "new high-speed USB device number 4 using xhci_hcd" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.driver, "xhci_hcd") line_str = "USB Mass Storage device detected" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.action, "insertion") line_str = "kernel: scsi host0: uas" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.action, "insertion") line_str = "USB disconnect, device" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.action, "removal") line_str = "sdb: sdb1" + mock_usb_storage = MagicMock() USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.mounted_partition, "sdb1") + line_str = "Invalid line" + mock_usb_storage = MagicMock() + mock_usb_storage.action = None + USBStorage._parse_journal_line(mock_usb_storage, line_str) + self.assertEqual(mock_usb_storage.action, None) + def test_mediacard_storage_init(self): mediacard_storage = MediacardStorage( "insertion", "mediacard", "zapper_addr" @@ -364,22 +378,29 @@ def test_mediacard_storage_no_removal(self): MediacardStorage._validate_removal(mock_mediacard_storage) def test_mediacard_storage_parse_journal_line(self): - mock_mediacard_storage = MagicMock() - line_str = "mmcblk0: p1" + mock_mediacard_storage = MagicMock() MediacardStorage._parse_journal_line(mock_mediacard_storage, line_str) self.assertEqual(mock_mediacard_storage.mounted_partition, "mmcblk0p1") line_str = "new SD card at address 123456" + mock_mediacard_storage = MagicMock() MediacardStorage._parse_journal_line(mock_mediacard_storage, line_str) self.assertEqual(mock_mediacard_storage.action, "insertion") self.assertEqual(mock_mediacard_storage.device, "SD") self.assertEqual(mock_mediacard_storage.address, "123456") line_str = "card 123456 removed" + mock_mediacard_storage = MagicMock() MediacardStorage._parse_journal_line(mock_mediacard_storage, line_str) self.assertEqual(mock_mediacard_storage.action, "removal") + line_str = "Invalid line" + mock_mediacard_storage = MagicMock() + mock_mediacard_storage.action = None + MediacardStorage._parse_journal_line(mock_mediacard_storage, line_str) + self.assertEqual(mock_mediacard_storage.action, None) + def test_thunderbolt_storage_init(self): thunderbolt_storage = ThunderboltStorage( "insertion", "thunderbolt", "zapper_addr" @@ -417,9 +438,8 @@ def test_thunderbolt_storage_no_removal(self): ThunderboltStorage._validate_removal(mock_thunderbolt_storage) def test_thunderbolt_storage_parse_journal_line(self): - mock_thunderbolt_storage = MagicMock() - line_str = "nvme0n1: p1" + mock_thunderbolt_storage = MagicMock() ThunderboltStorage._parse_journal_line( mock_thunderbolt_storage, line_str ) @@ -428,17 +448,27 @@ def test_thunderbolt_storage_parse_journal_line(self): ) line_str = "thunderbolt 1-1: new device found" + mock_thunderbolt_storage = MagicMock() ThunderboltStorage._parse_journal_line( mock_thunderbolt_storage, line_str ) self.assertEqual(mock_thunderbolt_storage.action, "insertion") line_str = "thunderbolt 1-1: device disconnected" + mock_thunderbolt_storage = MagicMock() ThunderboltStorage._parse_journal_line( mock_thunderbolt_storage, line_str ) self.assertEqual(mock_thunderbolt_storage.action, "removal") + line_str = "Invalid line" + mock_thunderbolt_storage = MagicMock() + mock_thunderbolt_storage.action = None + MediacardStorage._parse_journal_line( + mock_thunderbolt_storage, line_str + ) + self.assertEqual(mock_thunderbolt_storage.action, None) + @patch("checkbox_support.scripts.run_watcher.USBStorage", spec=USBStorage) def test_main_usb(self, mock_usb_storage): with patch("sys.argv", ["run_watcher.py", "insertion", "usb2"]):