From: Christian Brauner Date: Sat, 13 Aug 2016 20:38:52 +0000 (+0200) Subject: tests: add unit tests for lxc_string_replace() X-Git-Tag: lxc-2.1.0~355^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bed0d08fe7e2a892b55c90ac7b3ff067d13c5c77;p=thirdparty%2Flxc.git tests: add unit tests for lxc_string_replace() Signed-off-by: Christian Brauner --- diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index 26beedad4..15b32f673 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -2,6 +2,8 @@ if ENABLE_TESTS LDADD = ../lxc/liblxc.so +noinst_HEADERS += lxctest.h + lxc_test_containertests_SOURCES = containertests.c lxc_test_locktests_SOURCES = locktests.c lxc_test_startone_SOURCES = startone.c @@ -23,6 +25,7 @@ lxc_test_list_SOURCES = list.c lxc_test_attach_SOURCES = attach.c lxc_test_device_add_remove_SOURCES = device_add_remove.c lxc_test_apparmor_SOURCES = aa.c +lxc_test_utils_SOURCES = lxc-test-utils.c lxctest.h AM_CFLAGS=-DLXCROOTFSMOUNT=\"$(LXCROOTFSMOUNT)\" \ -DLXCPATH=\"$(LXCPATH)\" \ @@ -50,7 +53,7 @@ bin_PROGRAMS = lxc-test-containertests lxc-test-locktests lxc-test-startone \ lxc-test-cgpath lxc-test-clonetest lxc-test-console \ lxc-test-snapshot lxc-test-concurrent lxc-test-may-control \ lxc-test-reboot lxc-test-list lxc-test-attach lxc-test-device-add-remove \ - lxc-test-apparmor + lxc-test-apparmor lxc-test-utils bin_SCRIPTS = lxc-test-automount lxc-test-autostart lxc-test-cloneconfig \ lxc-test-createconfig @@ -94,6 +97,7 @@ EXTRA_DIST = \ lxc-test-symlink \ lxc-test-ubuntu \ lxc-test-unpriv \ + lxc-test-utils \ may_control.c \ saveconfig.c \ shutdowntest.c \ diff --git a/src/tests/lxc-test-utils.c b/src/tests/lxc-test-utils.c new file mode 100644 index 000000000..8e7205c86 --- /dev/null +++ b/src/tests/lxc-test-utils.c @@ -0,0 +1,73 @@ +/* + * lxc: linux Container library + * + * Copyright © 2016 Canonical Ltd. + * + * Authors: + * Christian Brauner + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 "lxctest.h" +#include "utils.h" + +void test_string_replace(void) +{ + char *s; + + s = lxc_string_replace("A", "A", "A"); + lxc_test_assert_abort(strcmp(s, "A") == 0); + free(s); + + s = lxc_string_replace("A", "AA", "A"); + lxc_test_assert_abort(strcmp(s, "AA") == 0); + free(s); + + s = lxc_string_replace("A", "AA", "BA"); + lxc_test_assert_abort(strcmp(s, "BAA") == 0); + free(s); + + s = lxc_string_replace("A", "AA", "BAB"); + lxc_test_assert_abort(strcmp(s, "BAAB") == 0); + free(s); + + s = lxc_string_replace("AA", "A", "AA"); + lxc_test_assert_abort(strcmp(s, "A") == 0); + free(s); + + s = lxc_string_replace("AA", "A", "BAA"); + lxc_test_assert_abort(strcmp(s, "BA") == 0); + free(s); + + s = lxc_string_replace("AA", "A", "BAAB"); + lxc_test_assert_abort(strcmp(s, "BAB") == 0); + free(s); + + s = lxc_string_replace("\"A\"A", "\"A\"", "B\"A\"AB"); + lxc_test_assert_abort(strcmp(s, "B\"A\"B") == 0); + free(s); +} + +int main(int argc, char *argv[]) +{ + test_string_replace(); + + exit(EXIT_SUCCESS); +} diff --git a/src/tests/lxctest.h b/src/tests/lxctest.h new file mode 100644 index 000000000..2793ca226 --- /dev/null +++ b/src/tests/lxctest.h @@ -0,0 +1,42 @@ +/* + * lxc: linux Container library + * + * Copyright © 2016 Canonical Ltd. + * + * Authors: + * Christian Brauner + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 + */ + +#ifndef __LXC_TEST_H_ +#define __LXC_TEST_H_ + +#include +#include +#include + +#define lxc_test_assert_stringify(expression, stringify_expression) \ + do { \ + if (!(expression)) { \ + fprintf(stderr, "%s: %s: %d: %s\n", __FILE__, \ + __func__, __LINE__, stringify_expression); \ + abort(); \ + } \ + } while (false) + +#define lxc_test_assert_abort(expression) lxc_test_assert_stringify(expression, #expression) + +#endif /* __LXC_TEST_H */