From 5975ea793a5d1367ff89e8c69099b8eac69d273d Mon Sep 17 00:00:00 2001 From: Steven Danneman Date: Tue, 8 Sep 2009 12:10:51 -0700 Subject: s4/torture: add new torture_assert_*_todo() macros These allow torture tests to perform cleanup after a failure, by jumping to a goto label. --- lib/torture/torture.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'lib/torture') diff --git a/lib/torture/torture.h b/lib/torture/torture.h index e28801e2692..7f387cc1f2b 100644 --- a/lib/torture/torture.h +++ b/lib/torture/torture.h @@ -246,6 +246,15 @@ void torture_result(struct torture_context *test, }\ } while(0) +#define torture_assert_ntstatus_equal_goto(torture_ctx,got,expected,ret,label,cmt) \ + do { NTSTATUS __got = got, __expected = expected; \ + if (!NT_STATUS_EQUAL(__got, __expected)) { \ + torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", nt_errstr(__got), nt_errstr(__expected), cmt); \ + ret = false; \ + goto label; \ + }\ + } while(0) + #define torture_assert_ndr_err_equal(torture_ctx,got,expected,cmt) \ do { enum ndr_err_code __got = got, __expected = expected; \ if (__got != __expected) { \ @@ -272,6 +281,17 @@ void torture_result(struct torture_context *test, } \ } while(0) +#define torture_assert_str_equal_goto(torture_ctx,got,expected,ret,label,cmt)\ + do { const char *__got = (got), *__expected = (expected); \ + if (strcmp_safe(__got, __expected) != 0) { \ + torture_result(torture_ctx, TORTURE_FAIL, \ + __location__": "#got" was %s, expected %s: %s", \ + __got, __expected, cmt); \ + ret = false; \ + goto label; \ + } \ + } while(0) + #define torture_assert_mem_equal(torture_ctx,got,expected,len,cmt)\ do { const void *__got = (got), *__expected = (expected); \ if (memcmp(__got, __expected, len) != 0) { \ @@ -343,6 +363,17 @@ void torture_result(struct torture_context *test, } \ } while(0) +#define torture_assert_int_equal_goto(torture_ctx,got,expected,ret,label,cmt)\ + do { int __got = (got), __expected = (expected); \ + if (__got != __expected) { \ + torture_result(torture_ctx, TORTURE_FAIL, \ + __location__": "#got" was %d, expected %d: %s", \ + __got, __expected, cmt); \ + ret = false; \ + goto label; \ + } \ + } while(0) + #define torture_assert_u64_equal(torture_ctx,got,expected,cmt)\ do { uint64_t __got = (got), __expected = (expected); \ if (__got != __expected) { \ @@ -370,6 +401,10 @@ void torture_result(struct torture_context *test, torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\ return true; \ } while(0) +#define torture_skip_goto(torture_ctx,label,cmt) do {\ + torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\ + goto label; \ + } while(0) #define torture_fail(torture_ctx,cmt) do {\ torture_result(torture_ctx, TORTURE_FAIL, __location__": %s", cmt);\ return false; \ @@ -385,6 +420,9 @@ void torture_result(struct torture_context *test, #define torture_assert_ntstatus_ok(torture_ctx,expr,cmt) \ torture_assert_ntstatus_equal(torture_ctx,expr,NT_STATUS_OK,cmt) +#define torture_assert_ntstatus_ok_goto(torture_ctx,expr,ret,label,cmt) \ + torture_assert_ntstatus_equal_goto(torture_ctx,expr,NT_STATUS_OK,ret,label,cmt) + #define torture_assert_werr_ok(torture_ctx,expr,cmt) \ torture_assert_werr_equal(torture_ctx,expr,WERR_OK,cmt) -- cgit v1.2.1