[rtems-central commit] validation: Move action code to separate function

Sebastian Huber sebh at rtems.org
Fri Aug 7 09:12:43 UTC 2020


Module:    rtems-central
Branch:    master
Commit:    6135d0a6de5a6a11e0fd5c97a9fa5d5ab4ebd630
Changeset: http://git.rtems.org/rtems-central/commit/?id=6135d0a6de5a6a11e0fd5c97a9fa5d5ab4ebd630

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Aug  4 06:58:34 2020 +0200

validation: Move action code to separate function

---

 rtemsspec/tests/test_validation.py | 16 ++++++++++++++--
 rtemsspec/validation.py            | 10 ++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/rtemsspec/tests/test_validation.py b/rtemsspec/tests/test_validation.py
index 7c7c242..b0a7a3e 100644
--- a/rtemsspec/tests/test_validation.py
+++ b/rtemsspec/tests/test_validation.py
@@ -726,6 +726,13 @@ static const struct {
   }
 };
 
+static void ClassicTaskIdentification_Action(
+  ClassicTaskIdentification_Context *ctx
+)
+{
+  ctx->status = rtems_task_ident( ctx->name, ctx->node, ctx->id );
+}
+
 /**
  * @fn void T_case_body_ClassicTaskIdentification( void )
  *
@@ -786,7 +793,7 @@ T_TEST_CASE_FIXTURE(
         ClassicTaskIdentification_Pre_Name_Prepare( ctx, ctx->pcs[ 0 ] );
         ClassicTaskIdentification_Pre_Node_Prepare( ctx, ctx->pcs[ 1 ] );
         ClassicTaskIdentification_Pre_Id_Prepare( ctx, ctx->pcs[ 2 ] );
-        ctx->status = rtems_task_ident( ctx->name, ctx->node, ctx->id );
+        ClassicTaskIdentification_Action( ctx );
         ClassicTaskIdentification_Post_Status_Check(
           ctx,
           ClassicTaskIdentification_TransitionMap[ index ][ 0 ]
@@ -1409,6 +1416,11 @@ static const struct {
   }
 };
 
+static void Action2_Action( Action2_Context *ctx )
+{
+  /* Action */
+}
+
 static T_fixture_node Action2_Node;
 
 void Action2_Run( int *a, int b, int *c )
@@ -1452,7 +1464,7 @@ void Action2_Run( int *a, int b, int *c )
 
       Action2_Pre_A_Prepare( ctx, ctx->pcs[ 0 ] );
       Action2_Pre_B_Prepare( ctx, ctx->pcs[ 1 ] );
-      /* Action */
+      Action2_Action( ctx );
       Action2_Post_A_Check(
         ctx,
         Action2_TransitionMap[ index ][ 0 ]
diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py
index cf3053a..f795205 100644
--- a/rtemsspec/validation.py
+++ b/rtemsspec/validation.py
@@ -472,12 +472,17 @@ class _TestDirectiveItem(_TestItem):
         content.append(["\n  }, {\n".join(info_elements), "  }", "};"])
 
     def _add_action(self, content: CContent) -> None:
+        with content.function("static void", f"{self.ident}_Action",
+                              [f"{self.context} *ctx"]):
+            content.append(self.substitute_code(self["test-action"]))
+
+    def _add_loop_body(self, content: CContent) -> None:
         with content.condition(f"{self.ident}_TransitionInfo[ index ].Skip"):
             content.append(["++index;", "continue;"])
         content.add_blank_line()
         for index, enum in enumerate(self._pre_index_to_enum):
             content.append(f"{enum[0]}_Prepare( ctx, ctx->pcs[ {index} ] );")
-        content.append(self.substitute_code(self["test-action"]))
+        content.append(f"{self.ident}_Action( ctx );")
         transition_map = f"{self.ident}_TransitionMap"
         for index, enum in enumerate(self._post_index_to_enum):
             content.append([
@@ -505,7 +510,7 @@ class _TestDirectiveItem(_TestItem):
                     content.lines[-1] += ";"
                 self._add_for_loops(content, index + 1)
         else:
-            self._add_action(content)
+            self._add_loop_body(content)
 
     def _add_test_case(self, content: CContent, header: Dict[str,
                                                              Any]) -> None:
@@ -637,6 +642,7 @@ class _TestDirectiveItem(_TestItem):
             f"  .initial_context = &{self.ident}_Instance", "};"
         ])
         self._add_transition_map(content)
+        self._add_action(content)
         self._add_test_case(content, header)
         content.add("/** @} */")
 



More information about the vc mailing list