On Wed, Feb 09, 2022 at 14:28:29 +0100, Michal Prívozník wrote:
On 2/9/22 10:39, Daniel P. Berrangé wrote:
> On Tue, Feb 08, 2022 at 12:22:36PM +0100, Michal Privoznik wrote:
>> In one of my previous commits, I've changed an XPath in
>> virCPUDefParseXML() from "boolean(./counter...)" to
>> "./counter...)". Notice the dangling closing bracket? Well, I
>> didn't back then.
>
> Suggests we have missing test XML data file example to
> be added somewhere, as detecting parsing errors are the
> one thing we are pretty good at in unit tests usually.
Actually we do have a test, well, sort of. We have cputest which if ran
standalone prints errors onto stderr:
ibvirt.git/_build/tests $ ./cputest
TEST: cputest
XPath error : Invalid expression
./counter[@name='tsc'])
^
But since everybody resorts to plain 'ninja test' which cleverly
discards these errors (storing them in a file that nobody reads is
equivalent) it went undetected. On the other hand, making a test fail on
nonempty stderr feels wrong. With the old suite we at least saw stderr
interleaved with regular output 😞.
Apparently the root cause in virCPUDefParseXML which just ignores this
kind of failure. A failure to get a value by XPath is just interpreted
as if the corresponding value was not present in the XML no matter what
exactly failed and why.
Jirka