[PATCH] samples/cdtest: Test execeptions during system init

Chris Johns chrisj at rtems.org
Mon Jul 4 01:52:17 UTC 2022


OK

Thanks
Chris

On 1/7/2022 8:02 pm, Sebastian Huber wrote:
> Update #4668.
> Update #4672.
> ---
>  testsuites/samples/cdtest/main.cc | 44 ++++++++++++++++++++++++-------
>  1 file changed, 35 insertions(+), 9 deletions(-)
> 
> diff --git a/testsuites/samples/cdtest/main.cc b/testsuites/samples/cdtest/main.cc
> index 894e404ba1..44cdaf84bb 100644
> --- a/testsuites/samples/cdtest/main.cc
> +++ b/testsuites/samples/cdtest/main.cc
> @@ -25,9 +25,11 @@
>  #include <rtems.h>
>  #include <rtems/bspIo.h>
>  #include <rtems/test-info.h>
> +#include <rtems/sysinit.h>
>  
>  #include <cstdio>
>  #include <cstdlib>
> +#include <cstring>
>  #include <stdexcept>
>  
>  #ifdef RTEMS_TEST_IO_STREAM
> @@ -44,13 +46,6 @@ extern rtems_task main_task(rtems_task_argument);
>  
>  static int num_inst = 0;
>  
> -static void check_begin_of_test(void)
> -{
> -  if ( num_inst == 0 ) {
> -    TEST_BEGIN();
> -  }
> -}
> -
>  static void check_end_of_test(void)
>  {
>    if ( num_inst == 0 ) {
> @@ -62,7 +57,6 @@ class AClass {
>  public:
>    AClass(const char *p = "LOCAL" ) : ptr( p )
>      {
> -        check_begin_of_test();
>          num_inst++;
>          printf(
>            "%s: Hey I'm in base class constructor number %d for %p.\n",
> @@ -104,7 +98,6 @@ class BClass : public AClass {
>  public:
>    BClass(const char *p = "LOCAL" ) : AClass( p )
>      {
> -        check_begin_of_test();
>          num_inst++;
>          printf(
>            "%s: Hey I'm in derived class constructor number %d for %p.\n",
> @@ -244,3 +237,36 @@ rtems_task main_task(
>      printf( "Global Dtors should be called after this line....\n" );
>      exit(0);
>  }
> +
> +static void early_exception()
> +{
> +    try
> +    {
> +      throw "early exception";
> +    }
> +    catch( const char *e )
> +    {
> +      rtems_test_assert(strcmp(e, "early exception") == 0);
> +      throw "early exception 2";
> +    }
> +}
> +
> +static void test_exceptions_during_system_init()
> +{
> +    TEST_BEGIN();
> +
> +    try
> +    {
> +      early_exception();
> +    }
> +    catch( const char *e )
> +    {
> +      rtems_test_assert(strcmp(e, "early exception 2") == 0);
> +    }
> +}
> +
> +RTEMS_SYSINIT_ITEM(
> +    test_exceptions_during_system_init,
> +    RTEMS_SYSINIT_IDLE_THREADS,
> +    RTEMS_SYSINIT_ORDER_LAST
> +);


More information about the devel mailing list