/
githubmirror
/
lvm2
Обзор
Документация
Войти
/
githubmirror
/
lvm2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/unit/framework.h
71 строка
2 KB
Zdenek Kabelac
test: fix unit test framework and improve assertions
11 май 2026, 11:18
11 май 2026, 11:18
f398d9c
Код
Авторство
О чём код?
#ifndef TEST_UNIT_FRAMEWORK_H #define TEST_UNIT_FRAMEWORK_H #include "libdm/libdevmapper.h" #include <stdbool.h> #include <stdint.h> #include <setjmp.h> #include <unistd.h> //----------------------------------------------------------------- // A test suite gathers a set of tests with a common fixture together. struct test_suite { struct dm_list list; void *(*fixture_init)(void); void (*fixture_exit)(void *); struct dm_list tests; }; struct test_details { struct test_suite *parent; struct dm_list list; const char *path; const char *desc; void (*fn)(void *); }; struct test_suite *test_suite_create(void *(*fixture_init)(void), void (*fixture_exit)(void *)); void test_suite_destroy(struct test_suite *ts); bool register_test(struct test_suite *ts, const char *path, const char *desc, void (*fn)(void *)); void test_fail(const char *fmt, ...) __attribute__((noreturn, format (printf, 1, 2))); #define T_ASSERT(e) do {if (!(e)) {test_fail("assertion failed: '%s'", # e);} } while(0) #define T_ASSERT_EQUAL(x, y) \ do { long long _x = (x), _y = (y); \ if (_x != _y) { \ char _buf[256]; \ snprintf(_buf, sizeof(_buf), \ "'%s' != '%s': 0x%llx != 0x%llx", \ #x, #y, (unsigned long long)_x, (unsigned long long)_y); \ test_fail("assertion failed: %s", _buf); \ } \ } while(0) #define T_ASSERT_NOT_EQUAL(x, y) T_ASSERT((x) != (y)) extern jmp_buf test_k; #define TEST_FAILED 1 static inline long test_page_size(void) { long ps = sysconf(_SC_PAGESIZE); if (ps <= 0 || ps >= (1 << 20)) ps = 4096; return ps; } #define TEST_PAGE_SIZE test_page_size() //----------------------------------------------------------------- #endif