From 318d0fe844b111c72df9c4660d1f915423310659 Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Thu, 10 Jul 2014 14:59:25 +0200
Subject: [PATCH] Auto add 'exit' label in every test function. Failed assert
now goes there
---
tests/scripts/generate_code.pl | 8 +++++++-
tests/suites/main_test.function | 2 +-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/tests/scripts/generate_code.pl b/tests/scripts/generate_code.pl
index 5440ced32..318629fe1 100755
--- a/tests/scripts/generate_code.pl
+++ b/tests/scripts/generate_code.pl
@@ -86,7 +86,7 @@ while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//
{
die "Test function does not have 'void' as return type\n";
}
- if ($function_decl !~ /^void (\w+)\(\s*(.*?)\s*\)\s*{(.*?)}/ms)
+ if ($function_decl !~ /^void (\w+)\(\s*(.*?)\s*\)\s*{(.*)}/ms)
{
die "Function declaration not in expected format\n";
}
@@ -104,6 +104,12 @@ while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//
$function_decl =~ s/^void /void test_suite_/;
+ # Add exit label if not present
+ if ($function_decl !~ /^exit:$/m)
+ {
+ $function_decl =~ s/}\s*$/\nexit:\n return;\n}/;
+ }
+
if ($function_deps =~ /^depends_on:/)
{
( $function_deps ) = $function_deps =~ /^depends_on:(.*)$/;
diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function
index 95a924f9a..318ca9aed 100644
--- a/tests/suites/main_test.function
+++ b/tests/suites/main_test.function
@@ -29,7 +29,7 @@ static int test_assert( int correct, const char *test )
#define TEST_ASSERT( TEST ) \
do { test_assert( (TEST) ? 1 : 0, #TEST ); \
- if( test_errors) return; \
+ if( test_errors) goto exit; \
} while (0)
int verify_string( char **str )