[tor-commits] [tor/master] Add a test for clear_fn support in handling non-managed fields

dgoulet at torproject.org dgoulet at torproject.org
Wed Sep 4 14:39:08 UTC 2019


commit a3e99c5f1e2eb9dd9ead51bcbed61dc2b99cf256
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Aug 27 13:18:38 2019 -0400

    Add a test for clear_fn support in handling non-managed fields
---
 src/test/test_confmgr.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/test/test_confmgr.c b/src/test/test_confmgr.c
index 170e8335e..5f73d9754 100644
--- a/src/test/test_confmgr.c
+++ b/src/test/test_confmgr.c
@@ -34,6 +34,8 @@ typedef struct {
   int cuteness;
   uint32_t magic;
   int eats_meat; /* deprecated; llamas are never carnivorous. */
+
+  char *description; // derived from other fields.
 } llama_cfg_t;
 
 typedef struct {
@@ -87,6 +89,16 @@ static config_deprecation_t alpaca_deprecations[] = {
   {NULL,NULL}
 };
 
+static int clear_llama_cfg_called = 0;
+static void
+clear_llama_cfg(const config_mgr_t *mgr, void *llamacfg)
+{
+  (void)mgr;
+  llama_cfg_t *lc = llamacfg;
+  tor_free(lc->description);
+  ++clear_llama_cfg_called;
+}
+
 static config_abbrev_t llama_abbrevs[] = {
   { "gracia", "cuteness", 0, 0 },
   { "gentillesse", "cuteness", 0, 0 },
@@ -115,6 +127,7 @@ static const config_format_t llama_fmt = {
   .config_suite_offset = -1,
   .deprecations = llama_deprecations,
   .abbrevs = llama_abbrevs,
+  .clear_fn = clear_llama_cfg,
 };
 
 static const config_format_t alpaca_fmt = {
@@ -250,6 +263,14 @@ test_confmgr_parse(void *arg)
   tt_int_op(lc->cuteness, OP_EQ, 42);
   tt_int_op(ac->fuzziness, OP_EQ, 50);
 
+  // We set the description for the llama here, so that the clear function
+  // can clear it.  (Later we can do this in a verification function.)
+  clear_llama_cfg_called = 0;
+  llama_cfg_t *mut_lc = config_mgr_get_obj_mutable(mgr, p, LLAMA_IDX);
+  mut_lc->description = tor_strdup("A llama named Hugo.");
+  config_free(mgr, p);
+  tt_int_op(clear_llama_cfg_called, OP_EQ, 1);
+
  done:
   config_free_lines(lines);
   config_free(mgr, p);





More information about the tor-commits mailing list