Skip to content
  • Timothy Gu's avatar
    tests/fprintd: Allow tests to run even when virtual device is not available · 4a3ae5cc
    Timothy Gu authored
    The test file calls self.daemon_start() in order to start fprintd and
    locate the virtual image device that's needed for the test to run.
    However, since the virtual image driver is not available on all
    libfprint installations, the test should be skipped if the driver is not
    available.
    
    The skipping mechanism used to work, by checking if self.device is None.
    This is based on the assumption that self.device would be set to None in
    cases where the driver is not available. However, even in the past
    self.device is only set to None in the tearDown method and not in setUp,
    so presumably in edge cases it didn't entirely work.
    
    However, since 0fb4f3b0 which
    consistently removes the self.device attribute rather than setting it to
    None, the "self.device is None" check no longer works. In particular,
    the following error message is shown:
    
        test_manager_get_default_device (__main__.FPrintdManagerTests) ...
        Did not find virtual device! Probably libfprint was build without
        the corresponding driver!
        ERROR
    
    After this patch, the following is shown:
    
        test_manager_get_default_device (__main__.FPrintdManagerTests) ...
        Did not find virtual device! Probably libfprint was build without
        the corresponding driver!
        skipped 'Need virtual_image device to run the test'
    
    We fix this bug by consistently setting self.device to None, in both the
    setUp method before daemon_start gets called, and in tearDown. We also
    make the same change to self.manager for consistency.
    
    The issue was not caught on CI, as the CI configuration always installs
    a libfprint version that has the virtual_image device explicitly enabled
    in the preparation phase.
    4a3ae5cc