diff options
Diffstat (limited to 'data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c')
-rw-r--r-- | data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c b/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c new file mode 100644 index 000000000..0600479e8 --- /dev/null +++ b/data/lighttpd/lighttpd-1.4.53/src/t/test_mod_evhost.c @@ -0,0 +1,80 @@ +#include "first.h" + +#undef NDEBUG +#include <assert.h> +#include <stdlib.h> +#include <stdio.h> + +#include "mod_evhost.c" + +static plugin_config * test_mod_evhost_plugin_config_init(void) { + plugin_config *s = calloc(1, sizeof(plugin_config)); + s->path_pieces_raw = buffer_init(); + s->path_pieces = NULL; + s->len = 0; + return s; +} + +static void test_mod_evhost_plugin_config_free(plugin_config *s) { + buffer_free(s->path_pieces_raw); + for (size_t i = 0; i < s->len; ++i) buffer_free(s->path_pieces[i]); + free(s->path_pieces); + free(s); +} + +static void test_mod_evhost_build_doc_root_path(void) { + buffer *authority = buffer_init_string("host.example.org"); + buffer *b = buffer_init(); + array *a = array_init(); + struct ttt { + const char *pattern; + size_t plen; + const char *expect; + size_t elen; + } tt[] = { + /* correct pattern not using dot notation */ + { CONST_STR_LEN("/web/%3/"), + CONST_STR_LEN("/web/host/") } + /* correct pattern using dot notation */ + ,{ CONST_STR_LEN("/web/%{3.1}/%{3.2}/%3/"), + CONST_STR_LEN("/web/h/o/host/") } + /* other pattern 1 */ + ,{ CONST_STR_LEN("/web/%{3.0}/"), + CONST_STR_LEN("/web/host/") } + /* other pattern 2 */ + ,{ CONST_STR_LEN("/web/%3.\1/"), + CONST_STR_LEN("/web/host.\1/") } + }; + + for (size_t i = 0; i < sizeof(tt)/sizeof(tt[0]); ++i) { + struct ttt *t = tt+i; + plugin_config *s = test_mod_evhost_plugin_config_init(); + buffer_copy_string_len(s->path_pieces_raw, t->pattern, t->plen); + assert(0 == mod_evhost_parse_pattern(s)); + mod_evhost_build_doc_root_path(b, a, authority, s->path_pieces, s->len); + assert(buffer_is_equal_string(b, t->expect, t->elen)); + test_mod_evhost_plugin_config_free(s); + } + + buffer_free(authority); + buffer_free(b); + array_free(a); +} + +int main (void) { + test_mod_evhost_build_doc_root_path(); + + return 0; +} + +/* + * stub functions + */ + +handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_cache_entry **sce) { + UNUSED(srv); + UNUSED(con); + UNUSED(name); + UNUSED(sce); + return HANDLER_GO_ON; +} |