def test_search_driver_enable(self): '''D-BUS API: Search for a driver which gets enabled''' ui = sandbox.TestUI() self.stop_capture() ui.backend().handlers['kmod:vanilla3d'].package = 'mesa-vanilla' # don't enable the driver result = ui.search_driver( 'modalias:pci:v00001001d00003D0sv0sd0bc03sc0i0') self.assertEqual(set(ui.get_displayed_handlers()), set(['kmod:vanilla3d', 'kmod:vanilla'])) self.assertEqual(result, (False, [])) self.assertEqual( ui.backend().handler_info('kmod:vanilla3d')['enabled'], 'False') # enable it now ui.ui_main_loop = lambda: ui.set_handler_enable( 'kmod:vanilla3d', 'enable', False, False ) # fake main loop to enable kmod:vanilla3d result = ui.search_driver( 'modalias:pci:v00001001d00003D0sv0sd0bc03sc0i0') self.assertEqual(set(ui.get_displayed_handlers()), set(['kmod:vanilla3d', 'kmod:vanilla'])) self.assertEqual( result, (True, sandbox.fake_pkginfo['default']['mesa-vanilla']['files'])) self.assertEqual( ui.backend().handler_info('kmod:vanilla3d')['enabled'], 'True')
def test_search_driver_enable(self): '''D-BUS API: Search for a driver which gets enabled''' ui = sandbox.TestUI() self.stop_capture() ui.backend().handlers['kmod:vanilla3d'].package = 'mesa-vanilla' # don't enable the driver result = ui.search_driver('modalias:pci:v00001001d00003D0sv0sd0bc03sc0i0') self.assertEqual(set(ui.get_displayed_handlers()), set(['kmod:vanilla3d', 'kmod:vanilla'])) self.assertEqual(result, (False, [])) self.assertEqual(ui.backend().handler_info('kmod:vanilla3d')['enabled'], 'False') # enable it now ui.ui_main_loop = lambda: ui.set_handler_enable('kmod:vanilla3d', 'enable', False, False) # fake main loop to enable kmod:vanilla3d result = ui.search_driver('modalias:pci:v00001001d00003D0sv0sd0bc03sc0i0') self.assertEqual(set(ui.get_displayed_handlers()), set(['kmod:vanilla3d', 'kmod:vanilla'])) self.assertEqual(result, (True, sandbox.fake_pkginfo['default']['mesa-vanilla']['files'])) self.assertEqual(ui.backend().handler_info('kmod:vanilla3d')['enabled'], 'True')
def case(confirm_response, action, confirm, expected_return, expected_enabled): ui.confirm_response = confirm_response self.assertEqual(ui.set_handler_enable('kmod:vanilla', action, confirm), expected_return) self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:vanilla')['enabled']), expected_enabled) self.assertRaises(IndexError, ui.pop_error)
def case(confirm_response, action, confirm, expected_return, expected_enabled): ui.confirm_response = confirm_response self.assertEqual( ui.set_handler_enable('kmod:vanilla', action, confirm), expected_return) self.assertEqual( jockey.ui.bool( ui.backend().handler_info('kmod:vanilla')['enabled']), expected_enabled) self.assertRaises(IndexError, ui.pop_error)
def test_set_handler_enable_error(self): '''set_handler_enable() on errors''' open(os.path.join(OSLib.inst.handler_dir, 'h.py'), 'w').write('import jockey.handlers' + sandbox.h_nochangemod) sys.argv = ['ui-test'] ui = sandbox.TestUI() self.stop_capture() for h_id in ui.backend().available(): self.assert_( jockey.ui.bool(ui.backend().handler_info(h_id)['enabled'])) if 'can_change' in ui.backend().handler_info(h_id): no_change_h = h_id else: change_h = h_id assert no_change_h assert change_h # change an unchangeable handler # note: don't set a confirmation response, it shouldn't ask here self.assertEqual(ui.set_handler_enable(no_change_h, 'enable', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) self.assertEqual(ui.set_handler_enable(no_change_h, 'disable', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) self.assertEqual(ui.set_handler_enable(no_change_h, 'toggle', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) # invalid operation self.assertRaises(ValueError, ui.set_handler_enable, no_change_h, 'foo', True) # package install failure ui.backend().handlers['kmod:mint'].package = 'pretzel' self.assertEqual( jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), False) OSLib.inst.pending_install_remove_exception = 'OMGbroken' self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False), False) self.assertEqual( jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), False) # one error message about install failure (etitle, etext) = ui.pop_error() self.assert_('OMGbroken' in etext, '%s: %s' % (etitle, etext)) self.assertRaises(IndexError, ui.pop_error) # install it now self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False), True) self.assertEqual( jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), True) # package removal failure OSLib.inst.pending_install_remove_exception = 'OMGZombie' self.assertEqual(ui.set_handler_enable('kmod:mint', 'disable', False), False) self.assertEqual( jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), True) # one error message about removal failure (etitle, etext) = ui.pop_error() self.assert_('OMGZombie' in etext, '%s: %s' % (etitle, etext)) self.assertRaises(IndexError, ui.pop_error)
def test_set_handler_enable_error(self): '''set_handler_enable() on errors''' open (os.path.join(OSLib.inst.handler_dir, 'h.py'), 'w').write( 'import jockey.handlers' + sandbox.h_nochangemod) sys.argv = ['ui-test'] ui = sandbox.TestUI() self.stop_capture() for h_id in ui.backend().available(): self.assert_(jockey.ui.bool(ui.backend().handler_info(h_id)['enabled'])) if 'can_change' in ui.backend().handler_info(h_id): no_change_h = h_id else: change_h = h_id assert no_change_h assert change_h # change an unchangeable handler # note: don't set a confirmation response, it shouldn't ask here self.assertEqual(ui.set_handler_enable(no_change_h, 'enable', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) self.assertEqual(ui.set_handler_enable(no_change_h, 'disable', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) self.assertEqual(ui.set_handler_enable(no_change_h, 'toggle', True), False) self.assertEqual(ui.pop_error()[1], 'I must live') self.assertRaises(IndexError, ui.pop_error) # invalid operation self.assertRaises(ValueError, ui.set_handler_enable, no_change_h, 'foo', True) # package install failure ui.backend().handlers['kmod:mint'].package = 'pretzel' self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), False) OSLib.inst.pending_install_remove_exception = 'OMGbroken' self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False), False) self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), False) # one error message about install failure (etitle, etext) = ui.pop_error() self.assert_('OMGbroken' in etext, '%s: %s' % (etitle, etext)) self.assertRaises(IndexError, ui.pop_error) # install it now self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False), True) self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), True) # package removal failure OSLib.inst.pending_install_remove_exception = 'OMGZombie' self.assertEqual(ui.set_handler_enable('kmod:mint', 'disable', False), False) self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']), True) # one error message about removal failure (etitle, etext) = ui.pop_error() self.assert_('OMGZombie' in etext, '%s: %s' % (etitle, etext)) self.assertRaises(IndexError, ui.pop_error)