def test_update(self): '''calling with --update''' sys.argv = ['ui-test', '--update'] ui = sandbox.TestUI() ui.backend().driver_dbs.append(sandbox.TestDriverDB()) self.assertEqual(ui.run(), 0) self.stop_capture() handlers = ui.backend().available() self.assert_('kmod:vanilla3d' in handlers) # from LocalKMod self.assert_('kmod:spam' in handlers) # from TestDriverDB
def test_localkernelmod_multiple_driverdb(self): '''get_handlers queries multiple driver DBs''' backend = jockey.backend.Backend() tddb = sandbox.TestDriverDB() tddb.update(backend.hardware) result = jockey.detection.get_handlers( backend, [tddb, jockey.detection.LocalKernelModulesDriverDB()]) out = '\n'.join([str(h) for h in result]) # LocalKernelModulesDriverDB delivers vanilla3d, TestDriverDB delivers # spam self.assert_('kmod:vanilla3d' in out) self.assert_('kmod:spam' in out)
def test_get_handlers_driverdb(self): '''get_handlers() returns applicable handlers with querying the driver db''' open(os.path.join(OSLib.inst.handler_dir, 'testhandlers.py'), 'w').write(''' import jockey.handlers %s class VanillaGfxHandler(jockey.handlers.KernelModuleHandler): def __init__(self, backend): jockey.handlers.KernelModuleHandler.__init__(self, backend, 'vanilla3d') class NonexistingModHandler(jockey.handlers.KernelModuleHandler): def __init__(self, backend): jockey.handlers.KernelModuleHandler.__init__(self, backend, 'nonexisting') ''' % sandbox.h_avail_mod) db = sandbox.TestDriverDB() backend = jockey.backend.Backend() db.update(backend.hardware) result = jockey.detection.get_handlers(backend, db) out = '\n'.join(sorted([str(h) for h in result])) self.assertEqual( out, '''firmware:firmwifi([FirmwareHandler, nonfree, disabled] standard module which needs firmware) kmod:mint([KernelModuleHandler, nonfree, enabled] nonfree module with available hardware, wifi) kmod:spam([KernelModuleHandler, free, enabled] free mystical module without modaliases) kmod:vanilla([AvailMod, free, enabled] free module with available hardware, graphics card) kmod:vanilla3d([VanillaGfxHandler, nonfree, enabled] nonfree, replacement graphics driver for vanilla)''' ) for h in result: if h.module == 'firmwifi': self.failIf(h.enabled()) # firmwifi is the only matching driver for this hardware and # thus shouldn't be displayed as recommended altough the DB # marks it as such self.failIf(h.recommended()) else: self.assert_(h.enabled())
def test_update_driverdb(self): '''Backend.update_driverdb() and new_used_available()''' b = jockey.backend.Backend() b.driver_dbs.append(sandbox.TestDriverDB()) b.update_driverdb() # enabled ones would not appear in new_used_available() b.set_enabled('kmod:spam', False) self.assertEqual(b.new_used_available(), (['kmod:vanilla'], ['kmod:spam', 'firmware:firmwifi'])) self.assertEqual(b.new_used_available(), ([], [])) result = b.available() self.assertEqual(set(result), set(['kmod:foodmi', 'kmod:mint', 'kmod:vanilla', 'kmod:firmwifi', 'firmware:firmwifi', 'kmod:vanilla3d', 'kmod:spam'])) b.set_enabled('kmod:spam', True) self.assertEqual(b.new_used_available(), (['kmod:spam'], [])) self.assertEqual(b.new_used_available(), ([], []))
def test_get_handlers_license_filter(self): '''get_handlers() returns applicable handlers with license filtering''' open(os.path.join(OSLib.inst.handler_dir, 'testhandlers.py'), 'w').write(''' import jockey.handlers %s class VanillaGfxHandler(jockey.handlers.KernelModuleHandler): def __init__(self, backend): jockey.handlers.KernelModuleHandler.__init__(self, backend, 'vanilla3d') ''' % sandbox.h_avail_mod) backend = jockey.backend.Backend() db = sandbox.TestDriverDB() db.update(backend.hardware) result = jockey.detection.get_handlers(backend, db, mode=jockey.detection.MODE_FREE) out = '\n'.join(sorted([str(h) for h in result])) self.assertEqual( out, '''kmod:spam([KernelModuleHandler, free, enabled] free mystical module without modaliases) kmod:vanilla([AvailMod, free, enabled] free module with available hardware, graphics card)''' ) result = jockey.detection.get_handlers( backend, db, mode=jockey.detection.MODE_NONFREE) out = '\n'.join(sorted([str(h) for h in result])) self.assertEqual( out, '''firmware:firmwifi([FirmwareHandler, nonfree, disabled] standard module which needs firmware) kmod:mint([KernelModuleHandler, nonfree, enabled] nonfree module with available hardware, wifi) kmod:vanilla3d([VanillaGfxHandler, nonfree, enabled] nonfree, replacement graphics driver for vanilla)''' )
def test_search_driver(self): '''Backend.search_driver()''' # search_driver() should not display available==True handlers open (os.path.join(OSLib.inst.handler_dir, 'k.py'), 'w').write( sandbox.h_availability_py) b = jockey.backend.Backend() self.assertEqual(b.search_driver('modalias:foo'), []) # hardware present; no DriverDB, thus yet unknown self.assertEqual(b.search_driver( 'modalias:pci:v0000FFF0d00000001sv00000000sd00000000bc06sc01i01'), []) # now add TestDriver, which adds spam/mint b.driver_dbs.append(sandbox.TestDriverDB()) b.update_driverdb() # hardware present, now there due to DriverDB self.assertEqual(set(b.search_driver( 'modalias:pci:v0000FFF0d00000001sv00000000sd00000000bc06sc01i01')), set(['kmod:spam', 'kmod:mint'])) # should also find hardware which isn't present locally self.assertEqual(set(b.search_driver( 'modalias:pci:v00001001d00003D01sv01sd02bc03sc01i00')), set(['kmod:vanilla3d', 'kmod:vanilla'])) # ... and add it to set of available handlers self.assert_('printer:openprinting-ppds-postscript-hp:HP' not in b.available()) self.assertEqual(b.search_driver( 'printer_deviceid:MFG:Hewlett-Packard;MDL:HP DesignJet 3500CP'), ['printer:openprinting-ppds-postscript-hp:20091009']) self.assert_('printer:openprinting-ppds-postscript-hp:20091009' in b.available())