Skip to content

Commit

Permalink
Add test for no ns
Browse files Browse the repository at this point in the history
Signed-off-by: Aaron Lipinski <aaron.lipinski@roboticsplus.co.nz>
  • Loading branch information
rpaaron committed Aug 25, 2020
1 parent 0d23479 commit 4eb68a8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
3 changes: 2 additions & 1 deletion rclcpp/src/rclcpp/node_interfaces/node_parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,11 @@ NodeParameters::NodeParameters(

// Enforce wildcard matching precedence
// TODO(cottsay) implement further wildcard matching
auto ns = std::string(node_base->get_namespace());
const std::vector<std::string> node_matching_names{
"/**",
"/*/" + std::string(node_base->get_name()),
std::string(node_base->get_namespace()) + "/*",
(ns == "/" ? "" : ns) + "/*",
combined_name_};

for (const auto & node_name : node_matching_names) {
Expand Down
25 changes: 25 additions & 0 deletions rclcpp/test/rclcpp/node_interfaces/test_node_parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,28 @@ TEST_F(TestNodeParameters, wildcard_with_namespace)
EXPECT_EQ(parameter_overrides.at("explicit_in_ns").get<std::string>(), "explicit_in_ns");
EXPECT_EQ(parameter_overrides.count("should_not_appear"), 0u);
}

TEST_F(TestNodeParameters, wildcard_no_namespace)
{
rclcpp::NodeOptions opts;
opts.arguments(
{
"--ros-args",
"--params-file", (test_resources_path / "wildcards.yaml").string()
});

std::shared_ptr<rclcpp::Node> node = std::make_shared<rclcpp::Node>("node", opts);

auto * node_parameters =
dynamic_cast<rclcpp::node_interfaces::NodeParameters *>(
node->get_node_parameters_interface().get());
ASSERT_NE(nullptr, node_parameters);

const auto & parameter_overrides = node_parameters->get_parameter_overrides();
EXPECT_EQ(4u, parameter_overrides.size());
EXPECT_EQ(parameter_overrides.at("full_wild").get<std::string>(), "full_wild");
EXPECT_EQ(parameter_overrides.at("namespace_wild").get<std::string>(), "namespace_wild");
EXPECT_EQ(parameter_overrides.at("node_wild_no_ns").get<std::string>(), "node_wild_no_ns");
EXPECT_EQ(parameter_overrides.at("explicit_no_ns").get<std::string>(), "explicit_no_ns");
EXPECT_EQ(parameter_overrides.count("should_not_appear"), 0u);
}
8 changes: 8 additions & 0 deletions rclcpp/test/resources/test_node_parameters/wildcards.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ ns:
ros__parameters:
explicit_in_ns: "explicit_in_ns"

"*":
ros__parameters:
node_wild_no_ns: "node_wild_no_ns"

node:
ros__parameters:
explicit_no_ns: "explicit_no_ns"

ns:
nodeX:
ros__parameters:
Expand Down

0 comments on commit 4eb68a8

Please sign in to comment.