Example #1
0
    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
Example #2
0
    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)
Example #3
0
    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())
Example #4
0
    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(), ([], []))
Example #5
0
    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)'''
        )
Example #6
0
    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())