From: Raphaël Beamonte Date: Wed, 13 Nov 2013 05:34:36 +0000 (-0500) Subject: Tests: Add test_utils_resolve_relative to unit tests X-Git-Tag: v2.4.0-rc1~47 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=c77d8c84b1100b93c66e9d6d9dac702159069010;p=lttng-tools.git Tests: Add test_utils_resolve_relative to unit tests Signed-off-by: Raphaël Beamonte --- diff --git a/.gitignore b/.gitignore index 5bacea48e..2d779e4b4 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,7 @@ tests/unit/test_session tests/unit/test_uri tests/unit/test_ust_data tests/unit/test_utils_parse_size_suffix +tests/unit/test_utils_resolve_relative kernel_all_events_basic kernel_event_basic ust_global_event_wildcard diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index a8dec2bd9..82f65080d 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -16,7 +16,8 @@ LIBHASHTABLE=$(top_builddir)/src/common/hashtable/libhashtable.la LIBRELAYD=$(top_builddir)/src/common/relayd/librelayd.la # Define test programs -noinst_PROGRAMS = test_uri test_session test_kernel_data test_utils_parse_size_suffix +noinst_PROGRAMS = test_uri test_session test_kernel_data +noinst_PROGRAMS += test_utils_parse_size_suffix test_utils_resolve_relative if HAVE_LIBLTTNG_UST_CTL noinst_PROGRAMS += test_ust_data @@ -82,10 +83,16 @@ test_kernel_data_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) $(LIBHASHTABLE) -lrt test_kernel_data_LDADD += $(KERN_DATA_TRACE) -# parse_size_suffix unit test -UTILS_PARSE_SIZE_SUFFIX=$(top_builddir)/src/common/.libs/utils.o \ +# utils suffix for unit test +UTILS_SUFFIX=$(top_builddir)/src/common/.libs/utils.o \ $(top_builddir)/src/common/.libs/runas.o +# parse_size_suffix unit test test_utils_parse_size_suffix_SOURCES = test_utils_parse_size_suffix.c test_utils_parse_size_suffix_LDADD = $(LIBTAP) $(LIBHASHTABLE) $(LIBCOMMON) -test_utils_parse_size_suffix_LDADD += $(UTILS_PARSE_SIZE_SUFFIX) +test_utils_parse_size_suffix_LDADD += $(UTILS_SUFFIX) + +# resolve_relative unit test +test_utils_resolve_relative_SOURCES = test_utils_resolve_relative.c +test_utils_resolve_relative_LDADD = $(LIBTAP) $(LIBHASHTABLE) $(LIBCOMMON) +test_utils_resolve_relative_LDADD += $(UTILS_SUFFIX) diff --git a/tests/unit/test_utils_resolve_relative.c b/tests/unit/test_utils_resolve_relative.c new file mode 100644 index 000000000..f43eeffb2 --- /dev/null +++ b/tests/unit/test_utils_resolve_relative.c @@ -0,0 +1,98 @@ +/* + * Copyright (C) - 2013 Raphaël Beamonte + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by as + * published by the Free Software Foundation; only version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include + +#include + +#include + +/* For lttngerr.h */ +int lttng_opt_quiet = 1; +int lttng_opt_verbose = 3; + +struct valid_test_input { + char *input; + char *expected_result; +}; + +/* Valid test cases */ +static struct valid_test_input valid_tests_inputs[] = { + { "/a/b/c/d/./e", "/a/b/c/d/e" }, + { "/a/b/c/d/../e", "/a/b/c/e" }, + { "/a/b/../c/d/../e", "/a/c/e" }, + { "/a/b/../../c/./d/./e", "/c/d/e" }, + { "/a/b/../../c/d/../../e", "/e" }, + { "/a/b/c/d/../../../../e", "/e" }, + { "/./a/b/c/d/./e", "/a/b/c/d/e" }, + { "/", "/" }, + { "", "" }, +}; +static const int num_valid_tests = + sizeof(valid_tests_inputs) / sizeof(valid_tests_inputs[0]); + +/* Invalid test cases */ +static char *invalid_tests_inputs[] = { + NULL, + "/../a/b/c/d/e", + "/a/b/c/d/../../../../../e", +}; +static const int num_invalid_tests = + sizeof(invalid_tests_inputs) / sizeof(invalid_tests_inputs[0]); + +static void test_utils_resolve_relative(void) +{ + char *result; + int i; + + /* Test valid cases */ + for (i = 0; i < num_valid_tests; i++) { + char name[100]; + sprintf(name, "valid test case: %s", valid_tests_inputs[i].input); + + result = utils_resolve_relative(valid_tests_inputs[i].input); + ok(strcmp(result, valid_tests_inputs[i].expected_result) == 0, name); + + free(result); + } + + /* Test invalid cases */ + for (i = 0; i < num_invalid_tests; i++) { + char name[100]; + sprintf(name, "invalid test case: %s", invalid_tests_inputs[i]); + + result = utils_resolve_relative(invalid_tests_inputs[i]); + if (result != NULL) { + free(result); + } + ok(result == NULL, name); + } +} + +int main(int argc, char **argv) +{ + plan_tests(num_valid_tests + num_invalid_tests); + + diag("utils_resolve_relative tests"); + + test_utils_resolve_relative(); + + return exit_status(); +} diff --git a/tests/unit_tests b/tests/unit_tests index 6bf33cc20..5d0f291f0 100644 --- a/tests/unit_tests +++ b/tests/unit_tests @@ -3,3 +3,4 @@ unit/test_session unit/test_uri unit/test_ust_data unit/test_utils_parse_size_suffix +unit/test_utils_resolve_relative