On 7/10/2025 4:54 AM, Markus Armbruster wrote:
Steven Sistare <steven.sist...@oracle.com> writes:
On 7/8/2025 6:02 PM, Philippe Mathieu-Daudé wrote:
Hi Steve,
On 8/7/25 19:24, Steve Sistare wrote:
Add a unit test for qom-list-getv.
Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
---
tests/qtest/qom-test.c | 64
++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/tests/qtest/qom-test.c b/tests/qtest/qom-test.c
index 27d70bc..4defff1 100644
--- a/tests/qtest/qom-test.c
+++ b/tests/qtest/qom-test.c
@@ -11,11 +11,72 @@
#include "qobject/qdict.h"
#include "qobject/qlist.h"
+#include "qobject/qstring.h"
#include "qemu/cutils.h"
#include "libqtest.h"
static int verbosity_level;
+static void test_getv(QTestState *qts, QList *paths)
+{
+ QListEntry *entry, *prop_entry, *path_entry;
+ g_autoptr(QDict) response = NULL;
+ QDict *args = qdict_new();
+ QDict *prop;
+ QList *return_list;
+
+ if (verbosity_level >= 2) {
Tested-by: Philippe Mathieu-Daudé <phi...@linaro.org>
But I note this doesn't assert anything except if you use V=3 and
look at the output.
I don't follow. It unconditionally traverses the whole tree and asserts
that properties are present. Plus, for V >= 2, it prints paths.
It starts with path "/machine".
For each property returned for that path, it checks there is a name and
type.
It collects the paths where the type starts with "child<" into a list,
and recurses. So it walks the entire tree under "/machine".
It does not examine property values at all. This is a gap in testing.
It does not check properties against expectations. The test would
silently pass if qom-list-getv always returned [], or if it always
returned crap types like "". Another gap.
I will assert that the returned list is not empty.
Checking all this for the entire tree is entirely impractical. But we
could check it for a suitable path of our choice. I recommend to avoid
going into machine-dependent weeds there. Maybe create some suitable
thing with -object, and check that.
OK. I will keep the existing traversal test, and add a test for
an object's property value.
- Steve
If you can't afford implementing this, document the gaps in a TODO
comment.
It is patterned after test_properties() in the same file.
Same gaps :)
[...]