Merge pull request #1688 from ogayot/fix-list-drivers

drivers: fix empty list of drivers shown when it has not yet been retrieved
This commit is contained in:
Olivier Gayot 2023-06-07 17:39:13 +02:00 committed by GitHub
commit 919ca5ebd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View File

@ -48,8 +48,6 @@ class DriversController(SubiquityController):
}
autoinstall_default = {"install": False}
drivers: Optional[List[str]] = None
def __init__(self, app) -> None:
super().__init__(app)
self.ubuntu_drivers: Optional[UbuntuDriversInterface] = None
@ -57,7 +55,9 @@ class DriversController(SubiquityController):
self._list_drivers_task: Optional[asyncio.Task] = None
self.list_drivers_done_event = asyncio.Event()
self.drivers: List[str] = []
# None means that the list has not (yet) been retrieved whereas an
# empty list means that no drivers are available.
self.drivers: Optional[List[str]] = None
def make_autoinstall(self):
return {
@ -84,7 +84,7 @@ class DriversController(SubiquityController):
self.ubuntu_drivers = get_ubuntu_drivers_interface(self.app)
self.drivers = []
self.drivers = None
self.list_drivers_done_event.clear()
if self._list_drivers_task is not None:
self._list_drivers_task.cancel()

View File

@ -1667,6 +1667,21 @@ class TestDrivers(TestAPI):
async def test_desktop_source(self):
await self._test_source('ubuntu-desktop', 'nvidia-driver-510')
@timeout()
async def test_listing_ongoing(self):
''' Ensure that the list of drivers returned by /drivers is null while
the list has not been retrieved. '''
async with start_server('examples/simple.json') as inst:
resp = await inst.get('/drivers', wait=False)
self.assertIsNone(resp['drivers'])
# POSTing to /source will restart the retrieval operation.
await inst.post('/source', source_id='ubuntu-server',
search_drivers=True)
resp = await inst.get('/drivers', wait=False)
self.assertIsNone(resp['drivers'])
class TestSource(TestAPI):
@timeout()