Merge "CI: keep testing the Python bindings"
diff --git a/src/yang_schema.cpp b/src/yang_schema.cpp
index 6021cc5..132c25f 100644
--- a/src/yang_schema.cpp
+++ b/src/yang_schema.cpp
@@ -304,7 +304,7 @@
std::optional<std::string> YangSchema::leafTypeName(const std::string& path) const
{
libyang::Schema_Node_Leaf leaf(getSchemaNode(path));
- return leaf.type()->der().get() ? std::optional{leaf.type()->der()->name()} : std::nullopt;
+ return leaf.type()->der().get() && leaf.type()->der()->type()->der().get() ? std::optional{leaf.type()->der()->name()} : std::nullopt;
}
std::string YangSchema::leafrefPath(const std::string& leafrefPath) const
diff --git a/src/yang_schema.hpp b/src/yang_schema.hpp
index 2a93b07..a4c0b90 100644
--- a/src/yang_schema.hpp
+++ b/src/yang_schema.hpp
@@ -41,6 +41,7 @@
const std::set<std::string> listKeys(const schemaPath_& location, const ModuleNodePair& node) const override;
yang::TypeInfo leafType(const schemaPath_& location, const ModuleNodePair& node) const override;
yang::TypeInfo leafType(const std::string& path) const override;
+ /** @brief If the leaf type is a typedef, returns the typedef name. */
std::optional<std::string> leafTypeName(const std::string& path) const override;
std::string leafrefPath(const std::string& leafrefPath) const override;
std::set<ModuleNodePair> availableNodes(const boost::variant<dataPath_, schemaPath_, module_>& path, const Recursion recursion) const override;
diff --git a/tests/yang.cpp b/tests/yang.cpp
index 79bad71..3d42c5e 100644
--- a/tests/yang.cpp
+++ b/tests/yang.cpp
@@ -1184,8 +1184,10 @@
REQUIRE(ys.defaultValue("/example-schema:leafInt32") == std::nullopt);
}
- SECTION("moduleNodes")
+ SECTION("leafTypeName")
{
+ REQUIRE(ys.leafTypeName("/example-schema:leafEnumTypedefRestricted") == "enumTypedef");
+ REQUIRE(ys.leafTypeName("/example-schema:leafInt32") == std::nullopt);
}
}