Message ID | 20240920132823.88433-3-stefan.klug@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
The typo in the commit title will be fixed on merge/next update. On Fri, Sep 20, 2024 at 03:28:09PM +0200, Stefan Klug wrote: > 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> > > --- > Changes in v3: > - Added separate patch for the failing test > --- > test/yaml-parser.cpp | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/test/yaml-parser.cpp b/test/yaml-parser.cpp > index 347999831d61..4cc77e26ae39 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()); > > -- > 2.43.0 >
Quoting Stefan Klug (2024-09-20 14:28:09) > 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> > > --- > Changes in v3: > - Added separate patch for the failing test > --- > test/yaml-parser.cpp | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/test/yaml-parser.cpp b/test/yaml-parser.cpp > index 347999831d61..4cc77e26ae39 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()); > We should also add the following change/hunk to this patch, or make test will fail at bisection here: diff --git a/test/meson.build b/test/meson.build index 5ed052ed62c8..dcd169a8793e 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 = [ With that: Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > -- > 2.43.0 >
On Fri, Sep 20, 2024 at 03:28:09PM +0200, Stefan Klug wrote: > 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> With either squashing or should_fail, Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > > --- > Changes in v3: > - Added separate patch for the failing test > --- > test/yaml-parser.cpp | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/test/yaml-parser.cpp b/test/yaml-parser.cpp > index 347999831d61..4cc77e26ae39 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()); > > -- > 2.43.0 >
diff --git a/test/yaml-parser.cpp b/test/yaml-parser.cpp index 347999831d61..4cc77e26ae39 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());
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> --- Changes in v3: - Added separate patch for the failing test --- test/yaml-parser.cpp | 6 ++++++ 1 file changed, 6 insertions(+)