From 4dcb0eda6865e1d2a0318fbecc19b8b4643b3c8f Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Tue, 6 Oct 2020 11:33:26 -0700 Subject: [PATCH] Fix implementation of NodeOptions::use_global_arguments() (#1176) (#1372) `this->node_options_` might still be `nullptr` for a default initialized NodeOptions instance. `use_global_arguments()` must return `this->use_global_arguments_`, in analogy to `NodeOptions::enable_rosout()`. Signed-off-by: Johannes Meyer Co-authored-by: Johannes Meyer --- rclcpp/src/rclcpp/node_options.cpp | 2 +- rclcpp/test/rclcpp/test_node_options.cpp | 32 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/rclcpp/src/rclcpp/node_options.cpp b/rclcpp/src/rclcpp/node_options.cpp index 43c4018..3a2dcd7 100644 --- a/rclcpp/src/rclcpp/node_options.cpp +++ b/rclcpp/src/rclcpp/node_options.cpp @@ -176,7 +176,7 @@ NodeOptions::parameter_overrides(const std::vector & paramete bool NodeOptions::use_global_arguments() const { - return this->node_options_->use_global_arguments; + return this->use_global_arguments_; } NodeOptions & diff --git a/rclcpp/test/rclcpp/test_node_options.cpp b/rclcpp/test/rclcpp/test_node_options.cpp index a90cfd1..17d108f 100644 --- a/rclcpp/test/rclcpp/test_node_options.cpp +++ b/rclcpp/test/rclcpp/test_node_options.cpp @@ -105,6 +105,38 @@ TEST(TestNodeOptions, bad_ros_args) { rclcpp::exceptions::UnknownROSArgsError); } +TEST(TestNodeOptions, use_global_arguments) { + { + auto options = rclcpp::NodeOptions(); + EXPECT_TRUE(options.use_global_arguments()); + EXPECT_TRUE(options.get_rcl_node_options()->use_global_arguments); + } + + { + auto options = rclcpp::NodeOptions().use_global_arguments(false); + EXPECT_FALSE(options.use_global_arguments()); + EXPECT_FALSE(options.get_rcl_node_options()->use_global_arguments); + } + + { + auto options = rclcpp::NodeOptions().use_global_arguments(true); + EXPECT_TRUE(options.use_global_arguments()); + EXPECT_TRUE(options.get_rcl_node_options()->use_global_arguments); + } + + { + auto options = rclcpp::NodeOptions(); + EXPECT_TRUE(options.use_global_arguments()); + EXPECT_TRUE(options.get_rcl_node_options()->use_global_arguments); + options.use_global_arguments(false); + EXPECT_FALSE(options.use_global_arguments()); + EXPECT_FALSE(options.get_rcl_node_options()->use_global_arguments); + options.use_global_arguments(true); + EXPECT_TRUE(options.use_global_arguments()); + EXPECT_TRUE(options.get_rcl_node_options()->use_global_arguments); + } +} + TEST(TestNodeOptions, enable_rosout) { { auto options = rclcpp::NodeOptions();