|
22 | 22 | import unittest.mock |
23 | 23 |
|
24 | 24 | import qubes.ext.admin |
| 25 | +import qubes.ext.audio |
25 | 26 | import qubes.ext.core_features |
26 | 27 | import qubes.ext.custom_persist |
27 | 28 | import qubes.ext.services |
@@ -2610,3 +2611,58 @@ def test_000_tags_permission(self): |
2610 | 2611 | "admin-permission:admin.vm.tag.Set", |
2611 | 2612 | tag, |
2612 | 2613 | ) |
| 2614 | + |
| 2615 | + |
| 2616 | +class TC_60_Audio(qubes.tests.QubesTestCase): |
| 2617 | + def setUp(self): |
| 2618 | + super().setUp() |
| 2619 | + self.ext = qubes.ext.audio.AUDIO() |
| 2620 | + self.audiovm = mock.MagicMock() |
| 2621 | + self.audiovm.name = "sys-audio" |
| 2622 | + self.client = mock.MagicMock() |
| 2623 | + self.client.name = "client" |
| 2624 | + self.client_alt = mock.MagicMock() |
| 2625 | + self.client_alt.name = "client" |
| 2626 | + |
| 2627 | + def test_000_shutdown(self): |
| 2628 | + self.ext.on_domain_pre_shutdown( |
| 2629 | + self.audiovm, |
| 2630 | + "domain-pre-shutdown", |
| 2631 | + ) |
| 2632 | + |
| 2633 | + def test_000_shutdown_used(self): |
| 2634 | + with unittest.mock.patch.object( |
| 2635 | + self.ext, "attached_vms", return_value=[self.client] |
| 2636 | + ), unittest.mock.patch.object( |
| 2637 | + self.client, "is_running", return_value=True |
| 2638 | + ): |
| 2639 | + self.client.is_preload = False |
| 2640 | + with self.assertRaises(qubes.exc.QubesVMInUseError): |
| 2641 | + self.ext.on_domain_pre_shutdown( |
| 2642 | + self.audiovm, |
| 2643 | + "domain-pre-shutdown", |
| 2644 | + ) |
| 2645 | + |
| 2646 | + self.client.is_preload = True |
| 2647 | + self.ext.on_domain_pre_shutdown( |
| 2648 | + self.audiovm, |
| 2649 | + "domain-pre-shutdown", |
| 2650 | + ) |
| 2651 | + |
| 2652 | + def test_000_shutdown_used_by_some(self): |
| 2653 | + with unittest.mock.patch.object( |
| 2654 | + self.ext, |
| 2655 | + "attached_vms", |
| 2656 | + return_value=[self.client, self.client_alt], |
| 2657 | + ), unittest.mock.patch.object( |
| 2658 | + self.client, "is_running", return_value=True |
| 2659 | + ), unittest.mock.patch.object( |
| 2660 | + self.client_alt, "is_running", return_value=True |
| 2661 | + ): |
| 2662 | + self.client.is_preload = False |
| 2663 | + self.client_alt.is_preload = True |
| 2664 | + with self.assertRaises(qubes.exc.QubesVMInUseError): |
| 2665 | + self.ext.on_domain_pre_shutdown( |
| 2666 | + self.audiovm, |
| 2667 | + "domain-pre-shutdown", |
| 2668 | + ) |
0 commit comments