From 6dbd9775a8eea4fec47bdc1f5249fa77aea5fd34 Mon Sep 17 00:00:00 2001 From: Krzysztof Opasiak Date: Tue, 22 Dec 2015 21:17:18 +0100 Subject: [PATCH] libusbgx: tests: Build tests with autotools Change-Id: I1438caf6806d2197bcf20a63b56e33d9243fb2a0 Signed-off-by: Pawel Szewczyk [Update description and rebase] Signed-off-by: Krzysztof Opasiak --- Makefile.am | 5 +++++ configure.ac | 48 +++++++++++++++++++++++++++++++++++--------- include/usbg/usbg_internal.h | 2 +- tests/Makefile.am | 14 +++++++++++++ tests/test.c | 39 +++++++++++++++++++++++++++++------ tests/test.sh | 28 +++++++++++++++++--------- tests/usbg-test.c | 5 ----- tests/usbg-test.h | 1 - 8 files changed, 110 insertions(+), 32 deletions(-) create mode 100644 tests/Makefile.am diff --git a/Makefile.am b/Makefile.am index 26abc57..05e1379 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,10 @@ include $(top_srcdir)/aminclude.am SUBDIRS = src examples + +if BUILD_TESTS +SUBDIRS += tests +endif + ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = doxygen.cfg library_includedir=$(includedir)/usbg diff --git a/configure.ac b/configure.ac index 8a36b19..b8d7cd0 100644 --- a/configure.ac +++ b/configure.ac @@ -1,24 +1,52 @@ AC_INIT([libusbgx], [0.0.1], [k.opasiak@samsung.com]) -AM_INIT_AUTOMAKE([-Wall -Werror foreign]) +AM_INIT_AUTOMAKE([1.12 -Wall -Werror foreign serial-tests]) AC_PROG_CC AM_PROG_AR +AM_PROG_CC_C_O AC_CONFIG_MACRO_DIR([m4]) AC_DEFINE([_GNU_SOURCE], [], [Use GNU extensions]) -AC_ARG_ENABLE([gadget-schemes], AS_HELP_STRING([--disable-gadget-schemes], - [build without gadget-schemes support]), [enable_gadget_schemes=$enableval], - [enable_gadget_schemes=yes]) -if test x$enable_gadget_schemes != xno; then +AC_ARG_WITH([libconfig], + AS_HELP_STRING([--without-libconfig], [build without using libconfig]), + [with_libconfig=$withval], [with_libconfig=yes]) + +AC_ARG_ENABLE([gadget-schemes], + AS_HELP_STRING([--disable-gadget-schemes], [build without gadget-schemes support]), + [enable_gadget_schemes=$enableval], [enable_gadget_schemes=yes]) + +AC_ARG_ENABLE([tests], + AS_HELP_STRING([--enable-tests], [build with tests]), + [enable_tests=$enableval], [enable_tests=no]) + +# if both tests and schemes are disabled, we do not need libconfig +AS_IF([test "x$enable_gadget_schemes" = xno && test "x$enable_tests" = xno], [with_libconfig=no]) + +AS_IF([test "x$with_libconfig" = xyes], [ PKG_CHECK_MODULES([LIBCONFIG], [libconfig >= 1.4], - [ AC_DEFINE(HAS_GADGET_SCHEMES, 1, [detected libconfig]) + [ AC_DEFINE(HAS_LIBCONFIG, 1, [detected libconfig]) PKG_CHECK_MODULES([NEW_LIBCONFIG], [libconfig >= 1.5], - AC_DEFINE(HAVE_LIBCONFIG_15, 1, [detected libconfig equal to or greater than 1.5]), - AC_DEFINE(HAVE_LIBCONFIG_15, 0, [])) + AC_DEFINE(HAVE_LIBCONFIG_15, 1, [detected libconfig equal to or greater than 1.5]), + AC_DEFINE(HAVE_LIBCONFIG_15, 0, [])) ]) CFLAGS="$CFLAGS $LIBCONFIG_CFLAGS" LIBS="$LIBS $LIBCONFIG_LIBS" -fi -AM_CONDITIONAL(TEST_GADGET_SCHEMES, test x$enable_gadget_schemes != xno ) +], [ + enable_gadget_schemes=no +]) + +AS_IF([test "x$enable_tests" = xyes], [ + PKG_CHECK_MODULES([CMOCKA], [cmocka >= 0.4.1], + AC_DEFINE(HAS_CMOCKA, 1, [detected cmocka])) + CFLAGS="$CFLAGS $CMOCKA_CFLAGS" + LIBS="$LIBS $CMOCKA_LIBS" + AC_CONFIG_FILES([tests/Makefile]) +]) +AM_CONDITIONAL(BUILD_TESTS, [test "x$enable_tests" = xyes]) + +AS_IF([test "x$enable_gadget_schemes" = xyes], + [AC_DEFINE(HAS_GADGET_SCHEMES, 1, [gadget schemes are enables])]) +AM_CONDITIONAL(TEST_GADGET_SCHEMES, [test "x$enable_gadget_schemes" != xno]) + LT_INIT AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile libusbgx.pc]) DX_INIT_DOXYGEN([$PACKAGE_NAME],[doxygen.cfg]) diff --git a/include/usbg/usbg_internal.h b/include/usbg/usbg_internal.h index 340d4e6..4b21fb1 100644 --- a/include/usbg/usbg_internal.h +++ b/include/usbg/usbg_internal.h @@ -17,7 +17,7 @@ #include #include -#ifdef HAS_GADGET_SCHEMES +#ifdef HAS_LIBCONFIG #include #else typedef struct _should_not_be_used config_t; diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..01feea4 --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,14 @@ +check_PROGRAMS = test +test_SOURCES = test.c usbg-test.c usbg-io-wrappers.c +test_LDFLAGS = -ldl +test_LDFLAGS += $(CMOCKA_LIBS) +test_LDFLAGS += $(LIBCONFIG_LIBS) +test_LDADD = ./libusbgx.so +test_CPPFLAGS = -I$(top_srcdir)/include/ + +./libusbgx.so: + -ln -s $(top_srcdir)/src/.libs/libusbgx.so* . +CLEANFILES = libusbgx.so* + +check_SCRIPTS = ./test.sh +TESTS = $(check_SCRIPTS) diff --git a/tests/test.c b/tests/test.c index 657fae9..899d3ad 100644 --- a/tests/test.c +++ b/tests/test.c @@ -1,8 +1,3 @@ -/* - This is just a temporary fix which should be removed - when we start building tests with automake -*/ -#define HAS_GADGET_SCHEMES #include #include #include @@ -13,10 +8,17 @@ #include #include #include + +#ifdef HAS_LIBCONFIG #include +#endif #include "usbg-test.h" +/** + * @file tests/test.c + */ + #define USBG_TEST(name, test, setup, teardown) \ {"setup "#test, setup, UNIT_TEST_FUNCTION_TYPE_SETUP}, \ {name, test, UNIT_TEST_FUNCTION_TYPE_TEST}, \ @@ -503,6 +505,10 @@ static UnitTest tests[] = { }; #define TESTS_TAG "tests" +/* for autotools compability */ +#define SKIPPED_CODE 77 + +#ifdef HAS_LIBCONFIG int gen_test_config(FILE *output) { @@ -510,7 +516,7 @@ int gen_test_config(FILE *output) config_setting_t *root; config_setting_t *tests_node, *node; int i; - int ret = 0, cfg_ret = 0; + int ret = SKIPPED_CODE, cfg_ret = 0; config_init(&cfg); config_set_tab_width(&cfg, 4); @@ -545,6 +551,16 @@ out: return ret; } +#else + +int gen_test_config(FILE *output) +{ + fprintf(stderr, "Libconfig is not supported\n"); + return -ENOTSUP; +} + +#endif /* HAS_LIBCONFIG */ + int lookup_test(const char *name) { int i; @@ -556,6 +572,7 @@ int lookup_test(const char *name) return -1; } +#ifdef HAS_LIBCONFIG int apply_test_config(FILE *input) { config_t cfg; @@ -632,6 +649,16 @@ out: return ret; } +#else + +int apply_test_config(FILE *input) +{ + fprintf(stderr, "Libconfig is not supported\n"); + return -ENOTSUP; +} + +#endif /* HAS_LIBCONFIG */ + void print_skipped_tests(FILE *stream) { int i = 0, nmb_skipped = 0; diff --git a/tests/test.sh b/tests/test.sh index 1385f23..45b8e3e 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -1,8 +1,17 @@ #!/bin/bash -USE_CONFIG=0 -GENERATE_CONFIG=0 -HELP=0 +#USE_CONFIG=0 +#GENERATE_CONFIG=0 +#HELP=$HELP + +# for autotools compability (config can be passed by environment variable) +if [[ -n $USE_CONFIG ]] +then + CONFIG_FILE=$USE_CONFIG +elif [[ -n $GENERATE_CONFIG ]] +then + CONFIG_FILE=$GENERATE_CONFIG +fi function usage { echo "libusbgx test suit" @@ -53,16 +62,17 @@ done # Run test with io functions ovverride -if [ $USE_CONFIG -ne 0 ] +if [[ -n $USE_CONFIG ]] then - LD_LIBRARY_PATH=. LD_PRELOAD=./usbg-io-wrappers.so ./test --use-config < $CONFIG_FILE -elif [ $GENERATE_CONFIG -ne 0 ] + LD_LIBRARY_PATH=. ./test --use-config < $CONFIG_FILE +elif [[ -n $GENERATE_CONFIG ]] then - LD_LIBRARY_PATH=. LD_PRELOAD=./usbg-io-wrappers.so ./test --generate-config > $CONFIG_FILE -elif [ $HELP -ne 0 ] + LD_LIBRARY_PATH=. ./test --generate-config > $CONFIG_FILE +elif [[ -n $HELP ]] then usage + exit 77 # autotools consider it skipped else - LD_LIBRARY_PATH=. LD_PRELOAD=./usbg-io-wrappers.so ./test + LD_LIBRARY_PATH=. ./test fi diff --git a/tests/usbg-test.c b/tests/usbg-test.c index 13226b9..ac4a952 100644 --- a/tests/usbg-test.c +++ b/tests/usbg-test.c @@ -1,8 +1,3 @@ -/* - This is just a temporary fix which should be removed - when we start building tests with automake -*/ -#define HAS_GADGET_SCHEMES #include #include #include diff --git a/tests/usbg-test.h b/tests/usbg-test.h index 8732bdb..15bb87a 100644 --- a/tests/usbg-test.h +++ b/tests/usbg-test.h @@ -1,5 +1,4 @@ #include -#include #include #include "usbg/usbg_internal.h" -- 2.7.4