So, this series fixes a few issues that are very tightly coupled, so buckle
up if you want to read further, if not, here you go:
TL;DR:
Issue: there's a test passing even though the code doesn't really work
Result: fix both the code and the test
LONG STORY:
The main issue is that we allow starting a domain with multiple OpenGL-enabled
graphics devices:
<graphics type='spice'>
<listen type='none'/>
<gl enable='yes' rendernode='foo'/>
</graphics>
<graphics type='egl-headless'/>
But hey, we have both a validation code handling this and a test case and
everything seems to work. Well, not really, since the validation code for
graphics was never run because it runs as a callback from our device iterator
which only iterates over devices which provide boot info data which graphics do
not provide. Any attempt to pass some arbitrary boot info data for graphics
will cause troubles in other callbacks that are invoked from within the
iterator. The way to enable it is to introduce some flags to alter the
behaviour of the iterator. So why didn't we this scenario? We did, but the
test case was lacking some capabilities and since it's a negative test case, it
happily accepted any kind of error from the library, therefore, negative
versions of DO_TEST_CAPS_LATEST have been introduced to mitigate failures like
these in the future.
Erik