summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Klug <stefan.klug@ideasonboard.com>2024-09-20 12:10:54 +0200
committerStefan Klug <stefan.klug@ideasonboard.com>2024-09-23 13:03:35 +0200
commitf623f3ed645d706ed2a0dd129328b63add0dbf47 (patch)
treef653d2427b164af385290fd60ba898bc283a5e01
parentf2842258d10fa509f0ab2227111836eecd184f48 (diff)
libcamera: yaml-parser: Add failing test for unexpected behavior
When accessing a nonexistent key on a dict the YamlObject returns an empty element. This element can happily be cast to a string. This is unexpected. For example the following statement: yamlDict["nonexistent"].get<string>("default") is expected to return "default" but actually returns "". Add a (failing) testcase for that behavior. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
-rw-r--r--test/meson.build2
-rw-r--r--test/yaml-parser.cpp6
2 files changed, 7 insertions, 1 deletions
diff --git a/test/meson.build b/test/meson.build
index 5ed052ed..dcd169a8 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -73,7 +73,7 @@ internal_tests = [
{'name': 'timer-thread', 'sources': ['timer-thread.cpp']},
{'name': 'unique-fd', 'sources': ['unique-fd.cpp']},
{'name': 'utils', 'sources': ['utils.cpp']},
- {'name': 'yaml-parser', 'sources': ['yaml-parser.cpp']},
+ {'name': 'yaml-parser', 'sources': ['yaml-parser.cpp'], 'should_fail': true},
]
internal_non_parallel_tests = [
diff --git a/test/yaml-parser.cpp b/test/yaml-parser.cpp
index 34799983..4cc77e26 100644
--- a/test/yaml-parser.cpp
+++ b/test/yaml-parser.cpp
@@ -536,6 +536,12 @@ protected:
return TestFail;
}
+ /* Test access to nonexistent member. */
+ if (dictObj["nonexistent"].get<std::string>("default") != "default") {
+ cerr << "Accessing nonexistent dict entry fails to return default" << std::endl;
+ return TestFail;
+ }
+
/* Make sure utils::map_keys() works on the adapter. */
(void)utils::map_keys(dictObj.asDict());