diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-08-27 13:18:38 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-08-28 09:42:17 -0400 |
commit | a3e99c5f1e2eb9dd9ead51bcbed61dc2b99cf256 (patch) | |
tree | 744cda4e2feb0d3f9f09f2648ba706e5e481a089 /src/test | |
parent | 577e628743bd7bb8c846bc73401e65b837cc4dbf (diff) | |
download | tor-a3e99c5f1e2eb9dd9ead51bcbed61dc2b99cf256.tar.gz tor-a3e99c5f1e2eb9dd9ead51bcbed61dc2b99cf256.zip |
Add a test for clear_fn support in handling non-managed fields
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/test_confmgr.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/test_confmgr.c b/src/test/test_confmgr.c index 170e8335e7..5f73d9754b 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); |