From cc1a6d2a947ef8c2577a77027d69fce012ae91fd Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sat, 4 Jun 2016 09:29:14 -0300 Subject: [PATCH] test: factor out some boilerplate from C tests The trick of having a common header file doesn't work to share between test scripts, so make an include file in the test directory. The use of #include looks slightly pretentious, but the include file is not actually in the current (temporary) directory. --- test/T590-libconfig.sh | 39 ++++++++++++++------------------------- test/notmuch-test.h | 16 ++++++++++++++++ test/test-lib.sh | 2 +- 3 files changed, 31 insertions(+), 26 deletions(-) create mode 100644 test/notmuch-test.h diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index 9c1e566d..e8c078d5 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -6,20 +6,9 @@ test_description="library config API" add_email_corpus cat < c_head -#include #include #include -#include - -void run(int line, notmuch_status_t ret) -{ - if (ret) { - fprintf (stderr, "line %d: %s\n", line, ret); - exit (1); - } -} - -#define RUN(v) run(__LINE__, v); +#include int main (int argc, char** argv) { @@ -27,23 +16,23 @@ int main (int argc, char** argv) char *val; notmuch_status_t stat; - RUN(notmuch_database_open (argv[1], NOTMUCH_DATABASE_MODE_READ_WRITE, &db)); + EXPECT0(notmuch_database_open (argv[1], NOTMUCH_DATABASE_MODE_READ_WRITE, &db)); EOF cat < c_tail - RUN(notmuch_database_destroy(db)); + EXPECT0(notmuch_database_destroy(db)); } EOF test_begin_subtest "notmuch_database_{set,get}_config" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { - RUN(notmuch_database_set_config (db, "testkey1", "testvalue1")); - RUN(notmuch_database_set_config (db, "testkey2", "testvalue2")); - RUN(notmuch_database_get_config (db, "testkey1", &val)); + EXPECT0(notmuch_database_set_config (db, "testkey1", "testvalue1")); + EXPECT0(notmuch_database_set_config (db, "testkey2", "testvalue2")); + EXPECT0(notmuch_database_get_config (db, "testkey1", &val)); printf("testkey1 = %s\n", val); - RUN(notmuch_database_get_config (db, "testkey2", &val)); + EXPECT0(notmuch_database_get_config (db, "testkey2", &val)); printf("testkey2 = %s\n", val); } EOF @@ -60,7 +49,7 @@ test_begin_subtest "notmuch_database_get_config_list: empty list" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { notmuch_config_list_t *list; - RUN(notmuch_database_get_config_list (db, "nonexistent", &list)); + EXPECT0(notmuch_database_get_config_list (db, "nonexistent", &list)); printf("valid = %d\n", notmuch_config_list_valid (list)); notmuch_config_list_destroy (list); } @@ -77,9 +66,9 @@ test_begin_subtest "notmuch_database_get_config_list: all pairs" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { notmuch_config_list_t *list; - RUN(notmuch_database_set_config (db, "zzzafter", "afterval")); - RUN(notmuch_database_set_config (db, "aaabefore", "beforeval")); - RUN(notmuch_database_get_config_list (db, "", &list)); + EXPECT0(notmuch_database_set_config (db, "zzzafter", "afterval")); + EXPECT0(notmuch_database_set_config (db, "aaabefore", "beforeval")); + EXPECT0(notmuch_database_get_config_list (db, "", &list)); for (; notmuch_config_list_valid (list); notmuch_config_list_move_to_next (list)) { printf("%s %s\n", notmuch_config_list_key (list), notmuch_config_list_value(list)); } @@ -100,7 +89,7 @@ test_begin_subtest "notmuch_database_get_config_list: one prefix" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { notmuch_config_list_t *list; - RUN(notmuch_database_get_config_list (db, "testkey", &list)); + EXPECT0(notmuch_database_get_config_list (db, "testkey", &list)); for (; notmuch_config_list_valid (list); notmuch_config_list_move_to_next (list)) { printf("%s %s\n", notmuch_config_list_key (list), notmuch_config_list_value(list)); } @@ -118,7 +107,7 @@ test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "dump config" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { - RUN(notmuch_database_set_config (db, "key with spaces", "value, with, spaces!")); + EXPECT0(notmuch_database_set_config (db, "key with spaces", "value, with, spaces!")); } EOF notmuch dump --include=config >OUTPUT @@ -136,7 +125,7 @@ test_begin_subtest "restore config" notmuch dump --include=config >EXPECTED cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { - RUN(notmuch_database_set_config (db, "testkey1", "mutatedvalue")); + EXPECT0(notmuch_database_set_config (db, "testkey1", "mutatedvalue")); } EOF notmuch restore --include=config +#include + +inline static void +expect0(int line, notmuch_status_t ret) +{ + if (ret) { + fprintf (stderr, "line %d: %s\n", line, ret); + exit (1); + } +} + +#define EXPECT0(v) expect0(__LINE__, v); +#endif diff --git a/test/test-lib.sh b/test/test-lib.sh index 54c65b60..aac0343b 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -1206,7 +1206,7 @@ test_C () { exec_file="test${test_count}" test_file="${exec_file}.c" cat > ${test_file} - ${TEST_CC} ${TEST_CFLAGS} -I${TEST_DIRECTORY}/../lib -o ${exec_file} ${test_file} -L${TEST_DIRECTORY}/../lib/ -lnotmuch -ltalloc + ${TEST_CC} ${TEST_CFLAGS} -I${TEST_DIRECTORY} -I${TEST_DIRECTORY}/../lib -o ${exec_file} ${test_file} -L${TEST_DIRECTORY}/../lib/ -lnotmuch -ltalloc echo "== stdout ==" > OUTPUT.stdout echo "== stderr ==" > OUTPUT.stderr ./${exec_file} "$@" 1>>OUTPUT.stdout 2>>OUTPUT.stderr