Skip to content

Commit 8ca6f42

Browse files
committed
variant_copy
Signed-off-by: Stephen Brawner <[email protected]>
1 parent c4352a1 commit 8ca6f42

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

rcl_yaml_param_parser/test/test_parser.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,6 @@ TEST(RclYamlParamParser, test_parse_file_with_bad_allocator) {
340340
});
341341
ASSERT_TRUE(rcutils_exists(path)) << "No test YAML file found at " << path;
342342

343-
// Check sporadic failing malloc calls
344343
RCUTILS_FAULT_INJECTION_TEST(
345344
{
346345
rcutils_allocator_t allocator = rcutils_get_default_allocator();
@@ -355,12 +354,8 @@ TEST(RclYamlParamParser, test_parse_file_with_bad_allocator) {
355354
(void)res;
356355

357356
// If `rcutils_string_array_fini` fails, there will be a small memory leak here.
358-
// Pausing fault injection so this test runs clean
359-
int64_t count = rcutils_fault_injection_get_count();
360-
rcutils_fault_injection_set_count(RCUTILS_FAULT_INJECTION_NEVER_FAIL);
357+
// However, it's necessary for coverage
361358
rcl_yaml_node_struct_fini(params_hdl);
362-
rcutils_fault_injection_set_count(count);
363-
364359
params_hdl = NULL;
365360
});
366361
}

rcl_yaml_param_parser/test/test_yaml_variant.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,35 @@ TEST(TestYamlVariant, copy_string_array_values) {
182182
src_variant.string_array_value->data[i], dest_variant.string_array_value->data[i]);
183183
}
184184
}
185+
186+
TEST(TestYamlVariant, copy_string_array_maybe_fail) {
187+
rcl_variant_t src_variant{};
188+
rcutils_allocator_t allocator = rcutils_get_default_allocator();
189+
constexpr size_t size = 3u;
190+
src_variant.string_array_value =
191+
static_cast<rcutils_string_array_t *>(
192+
allocator.allocate(sizeof(rcutils_string_array_t), allocator.state));
193+
ASSERT_NE(nullptr, src_variant.string_array_value);
194+
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT(
195+
{
196+
rcl_yaml_variant_fini(&src_variant, allocator);
197+
});
198+
*src_variant.string_array_value = rcutils_get_zero_initialized_string_array();
199+
ASSERT_EQ(
200+
RCUTILS_RET_OK, rcutils_string_array_init(src_variant.string_array_value, size, &allocator));
201+
src_variant.string_array_value->size = size;
202+
src_variant.string_array_value->data[0] = rcutils_strdup("string1", allocator);
203+
src_variant.string_array_value->data[1] = rcutils_strdup("string2", allocator);
204+
src_variant.string_array_value->data[2] = rcutils_strdup("string3", allocator);
205+
for (size_t i = 0; i < size; ++i) {
206+
ASSERT_NE(nullptr, src_variant.string_array_value->data[i]);
207+
}
208+
209+
RCUTILS_FAULT_INJECTION_TEST(
210+
{
211+
rcl_variant_t dest_variant{};
212+
rcutils_ret_t ret = rcl_yaml_variant_copy(&dest_variant, &src_variant, allocator);
213+
(void)ret;
214+
rcl_yaml_variant_fini(&dest_variant, allocator);
215+
});
216+
}

0 commit comments

Comments
 (0)