qubes/tests: skip env-dependent tests using decorator
Gtk segfaults without X11 display. Some tests need dedicated PCI device.
This commit is contained in:
		
							parent
							
								
									044e10a6ec
								
							
						
					
					
						commit
						8547d06cc9
					
				| @ -109,6 +109,7 @@ except OSError: | ||||
|     # command not found; let's assume we're outside | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| def skipUnlessDom0(test_item): | ||||
|     '''Decorator that skips test outside dom0. | ||||
| 
 | ||||
| @ -118,7 +119,6 @@ def skipUnlessDom0(test_item): | ||||
| 
 | ||||
|     return unittest.skipUnless(in_dom0, 'outside dom0')(test_item) | ||||
| 
 | ||||
| 
 | ||||
| def skipUnlessGit(test_item): | ||||
|     '''Decorator that skips test outside git repo. | ||||
| 
 | ||||
| @ -128,6 +128,16 @@ def skipUnlessGit(test_item): | ||||
| 
 | ||||
|     return unittest.skipUnless(in_git, 'outside git tree')(test_item) | ||||
| 
 | ||||
| def skipUnlessEnv(varname): | ||||
|     '''Decorator generator for skipping tests without environment variable set. | ||||
| 
 | ||||
|     Some tests require working X11 display, like those using GTK library, which | ||||
|     segfaults without connection to X. | ||||
|     Other require their own, custom variables. | ||||
|     ''' | ||||
| 
 | ||||
|     return unittest.skipUnless(os.getenv(varname), 'no {} set'.format(varname)) | ||||
| 
 | ||||
| 
 | ||||
| class TestEmitter(qubes.events.Emitter): | ||||
|     '''Dummy event emitter which records events fired on it. | ||||
|  | ||||
| @ -31,14 +31,12 @@ import qubes.ext.pci | ||||
| import qubes.tests | ||||
| 
 | ||||
| 
 | ||||
| @qubes.tests.skipUnlessEnv('QUBES_TEST_PCIDEV') | ||||
| class TC_00_Devices_PCI(qubes.tests.SystemTestCase): | ||||
|     def setUp(self): | ||||
|         super(TC_00_Devices_PCI, self).setUp() | ||||
|         if self._testMethodName not in ['test_000_list']: | ||||
|             pcidev = os.environ.get('QUBES_TEST_PCIDEV', None) | ||||
|             if pcidev is None: | ||||
|                 self.skipTest('Specify PCI device with QUBES_TEST_PCIDEV ' | ||||
|                               'environment variable') | ||||
|             pcidev = os.environ['QUBES_TEST_PCIDEV'] | ||||
|             self.dev = self.app.domains[0].devices['pci'][pcidev] | ||||
|             self.assignment = qubes.devices.DeviceAssignment(backend_domain=self.dev.backend_domain, ident=self.dev.ident, persistent=True) | ||||
|             if isinstance(self.dev, qubes.devices.UnknownDevice): | ||||
|  | ||||
| @ -26,6 +26,8 @@ import gi  # isort:skip | ||||
| gi.require_version('Gtk', '3.0')  # isort:skip | ||||
| from gi.repository import Gtk  # isort:skip pylint: | ||||
| 
 | ||||
| from qubes.tests import skipUnlessEnv | ||||
| 
 | ||||
| from qubespolicy.gtkhelpers import VMListModeler, GtkOneTimerHelper, \ | ||||
|     FocusStealingHelper | ||||
| 
 | ||||
| @ -81,6 +83,7 @@ class GtkTestCase(unittest.TestCase): | ||||
|         return iterations, time_length | ||||
| 
 | ||||
| 
 | ||||
| @skipUnlessEnv('DISPLAY') | ||||
| class VMListModelerTest(VMListModeler, unittest.TestCase): | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         unittest.TestCase.__init__(self, *args, **kwargs) | ||||
| @ -305,6 +308,7 @@ class FocusStealingHelperMock(FocusStealingHelper): | ||||
|         self._window_changed_focus(True) | ||||
| 
 | ||||
| 
 | ||||
| @skipUnlessEnv('DISPLAY') | ||||
| class FocusStealingHelperTest(FocusStealingHelperMock, GtkTestCase): | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         GtkTestCase.__init__(self, *args, **kwargs) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Wojtek Porczyk
						Wojtek Porczyk