aboutsummaryrefslogtreecommitdiff
path: root/src/common/testsupport.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/testsupport.h')
-rw-r--r--src/common/testsupport.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/common/testsupport.h b/src/common/testsupport.h
index 3bb11a7e41..9ad2ba77e0 100644
--- a/src/common/testsupport.h
+++ b/src/common/testsupport.h
@@ -6,8 +6,10 @@
#ifdef TOR_UNIT_TESTS
#define STATIC
+#define EXTERN(type, name) extern type name;
#else
#define STATIC static
+#define EXTERN(type, name)
#endif
/** Quick and dirty macros to implement test mocking.
@@ -60,6 +62,12 @@
#define MOCK_IMPL(rv, funcname, arglist) \
rv(*funcname) arglist = funcname ##__real; \
rv funcname ##__real arglist
+#define MOCK_DECL_ATTR(rv, funcname, arglist, attr) \
+ rv funcname ##__real arglist attr; \
+ extern rv(*funcname) arglist
+#define MOCK_IMPL(rv, funcname, arglist) \
+ rv(*funcname) arglist = funcname ##__real; \
+ rv funcname ##__real arglist
#define MOCK(func, replacement) \
do { \
(func) = (replacement); \
@@ -71,6 +79,8 @@
#else
#define MOCK_DECL(rv, funcname, arglist) \
rv funcname arglist
+#define MOCK_DECL_ATTR(rv, funcname, arglist, attr) \
+ rv funcname arglist attr
#define MOCK_IMPL(rv, funcname, arglist) \
rv funcname arglist
#endif