diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-28 16:28:15 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-30 10:08:02 +0200 |
commit | c8bb49face9042803b4f876ba2dca52ef84fe1c0 (patch) | |
tree | 413163572f6efaf28e7759f6ed3eee98eb0f397d | |
parent | modules: Update rtems (diff) | |
download | rtems-central-c8bb49face9042803b4f876ba2dca52ef84fe1c0.tar.bz2 |
validation: Support freestanding test cases
-rw-r--r-- | rtemsspec/tests/spec-validation/tc5.yml | 1 | ||||
-rw-r--r-- | rtemsspec/tests/spec-validation/tc6.yml | 1 | ||||
-rw-r--r-- | rtemsspec/tests/spec-validation/tc7.yml | 1 | ||||
-rw-r--r-- | rtemsspec/tests/spec-validation/tc8.yml | 1 | ||||
-rw-r--r-- | rtemsspec/tests/test_validation.py | 6 | ||||
-rw-r--r-- | rtemsspec/validation.py | 33 | ||||
-rw-r--r-- | spec/rtems/event/req/send-receive.yml | 1 | ||||
-rw-r--r-- | spec/rtems/event/val/event-constant.yml | 1 | ||||
-rw-r--r-- | spec/rtems/req/ident-local.yml | 1 | ||||
-rw-r--r-- | spec/rtems/req/ident.yml | 1 | ||||
-rw-r--r-- | spec/score/mtx/req/seize-try.yml | 1 | ||||
-rw-r--r-- | spec/score/mtx/req/seize-wait.yml | 1 | ||||
-rw-r--r-- | spec/score/sem/req/seize-try.yml | 1 | ||||
-rw-r--r-- | spec/score/sem/req/seize-wait.yml | 1 | ||||
-rw-r--r-- | spec/score/tq/req/enqueue-ceiling.yml | 1 | ||||
-rw-r--r-- | spec/score/tq/req/enqueue-deadlock.yml | 1 | ||||
-rw-r--r-- | spec/score/tq/req/enqueue-fifo.yml | 1 | ||||
-rw-r--r-- | spec/score/tq/req/enqueue-mrsp.yml | 1 | ||||
-rw-r--r-- | spec/score/tq/req/enqueue-priority.yml | 1 | ||||
-rw-r--r-- | spec/spec/test-header.yml | 7 |
20 files changed, 49 insertions, 14 deletions
diff --git a/rtemsspec/tests/spec-validation/tc5.yml b/rtemsspec/tests/spec-validation/tc5.yml index ee603675..0b39181a 100644 --- a/rtemsspec/tests/spec-validation/tc5.yml +++ b/rtemsspec/tests/spec-validation/tc5.yml @@ -43,6 +43,7 @@ test-description: Test case 5 description. test-header: code: | /* Header code for ${.:/test-run}() */ + freestanding: true includes: - d.h local-includes: diff --git a/rtemsspec/tests/spec-validation/tc6.yml b/rtemsspec/tests/spec-validation/tc6.yml index bf1c60dd..ad2c6f43 100644 --- a/rtemsspec/tests/spec-validation/tc6.yml +++ b/rtemsspec/tests/spec-validation/tc6.yml @@ -10,6 +10,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: [] run-params: [] diff --git a/rtemsspec/tests/spec-validation/tc7.yml b/rtemsspec/tests/spec-validation/tc7.yml index 93797cee..606546e4 100644 --- a/rtemsspec/tests/spec-validation/tc7.yml +++ b/rtemsspec/tests/spec-validation/tc7.yml @@ -16,6 +16,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: [] run-params: [] diff --git a/rtemsspec/tests/spec-validation/tc8.yml b/rtemsspec/tests/spec-validation/tc8.yml index 9d44b78f..6b905623 100644 --- a/rtemsspec/tests/spec-validation/tc8.yml +++ b/rtemsspec/tests/spec-validation/tc8.yml @@ -20,6 +20,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: [] run-params: [] diff --git a/rtemsspec/tests/test_validation.py b/rtemsspec/tests/test_validation.py index 1557d505..e5fb8901 100644 --- a/rtemsspec/tests/test_validation.py +++ b/rtemsspec/tests/test_validation.py @@ -1332,8 +1332,6 @@ static void Tc5_Action_1( Tc5_Context *ctx ) /* Test case action 1 check 1 code */ } -static T_fixture_node Tc5_Node; - void Tc5_Run( int *a, int b, int *c ) { Tc5_Context *ctx; @@ -1343,14 +1341,14 @@ void Tc5_Run( int *a, int b, int *c ) ctx->b = b; ctx->c = c; - ctx = T_push_fixture( &Tc5_Node, &Tc5_Fixture ); + ctx = T_case_begin( "Tc5", &Tc5_Fixture ); T_plan( 2 ); Tc5_Action_0( ctx ); Tc5_Action_1( ctx ); - T_pop_fixture(); + T_case_end(); } /** @} */ diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py index 0d961170..8e14869d 100644 --- a/rtemsspec/validation.py +++ b/rtemsspec/validation.py @@ -392,6 +392,27 @@ class _TestItem: for param in header["run-params"] ]) + def _add_runner_prologue_and_epilogue(self, content: CContent, + prologue: CContent, + epilogue: CContent, + fixture: str) -> None: + header = self["test-header"] + if self.context == "void": + result = None + else: + prologue.add(f"{self.context} *ctx;") + self.assign_run_params(prologue, header) + result = "ctx =" + if header["freestanding"]: + prologue.call_function(result, "T_case_begin", + [f"\"{self.ident}\"", fixture]) + epilogue.add("T_case_end();") + else: + content.add(f"static T_fixture_node {self.ident}_Node;") + prologue.call_function(result, "T_push_fixture", + [f"&{self.ident}_Node", fixture]) + epilogue.add("T_pop_fixture();") + def generate(self, content: CContent, base_directory: str, test_case_to_suites: Dict[str, List["_TestItem"]]) -> None: """ Generates the content. """ @@ -411,16 +432,8 @@ class _TestItem: if self._mapper.steps > 0 and not fixture: fixture = "&T_empty_fixture" if fixture: - content.add(f"static T_fixture_node {self.ident}_Node;") - if self.context == "void": - result = None - else: - prologue.add(f"{self.context} *ctx;") - self.assign_run_params(prologue, header) - result = "ctx =" - prologue.call_function(result, "T_push_fixture", - [f"&{self.ident}_Node", fixture]) - epilogue.add("T_pop_fixture();") + self._add_runner_prologue_and_epilogue(content, prologue, + epilogue, fixture) align = True else: ret = "" diff --git a/spec/rtems/event/req/send-receive.yml b/spec/rtems/event/req/send-receive.yml index 2bd65dbb..ccee2f31 100644 --- a/spec/rtems/event/req/send-receive.yml +++ b/spec/rtems/event/req/send-receive.yml @@ -427,6 +427,7 @@ test-context-support: | test-description: null test-header: code: null + freestanding: false includes: - rtems.h - rtems/score/thread.h diff --git a/spec/rtems/event/val/event-constant.yml b/spec/rtems/event/val/event-constant.yml index 77ba10cb..6d9e863d 100644 --- a/spec/rtems/event/val/event-constant.yml +++ b/spec/rtems/event/val/event-constant.yml @@ -416,6 +416,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: - rtems.h local-includes: [] diff --git a/spec/rtems/req/ident-local.yml b/spec/rtems/req/ident-local.yml index c5da44e6..2b7406c5 100644 --- a/spec/rtems/req/ident-local.yml +++ b/spec/rtems/req/ident-local.yml @@ -112,6 +112,7 @@ test-header: code: | #define ClassicObjectLocalIdentName \ rtems_build_name( 'I', 'D', 'N', 'T' ) + freestanding: false includes: - rtems.h local-includes: [] diff --git a/spec/rtems/req/ident.yml b/spec/rtems/req/ident.yml index 098779db..c2df762a 100644 --- a/spec/rtems/req/ident.yml +++ b/spec/rtems/req/ident.yml @@ -172,6 +172,7 @@ test-header: code: | #define ClassicObjectIdentName \ rtems_build_name( 'I', 'D', 'N', 'T' ) + freestanding: false includes: - rtems.h local-includes: [] diff --git a/spec/score/mtx/req/seize-try.yml b/spec/score/mtx/req/seize-try.yml index deba2531..18ada09b 100644 --- a/spec/score/mtx/req/seize-try.yml +++ b/spec/score/mtx/req/seize-try.yml @@ -213,6 +213,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/mtx/req/seize-wait.yml b/spec/score/mtx/req/seize-wait.yml index 39ff4910..6d3396fb 100644 --- a/spec/score/mtx/req/seize-wait.yml +++ b/spec/score/mtx/req/seize-wait.yml @@ -205,6 +205,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/sem/req/seize-try.yml b/spec/score/sem/req/seize-try.yml index 3dd79b77..685f9921 100644 --- a/spec/score/sem/req/seize-try.yml +++ b/spec/score/sem/req/seize-try.yml @@ -82,6 +82,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/sem/req/seize-wait.yml b/spec/score/sem/req/seize-wait.yml index 98616bdd..ba68fe51 100644 --- a/spec/score/sem/req/seize-wait.yml +++ b/spec/score/sem/req/seize-wait.yml @@ -101,6 +101,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/tq/req/enqueue-ceiling.yml b/spec/score/tq/req/enqueue-ceiling.yml index bc8dd850..b38ea3a5 100644 --- a/spec/score/tq/req/enqueue-ceiling.yml +++ b/spec/score/tq/req/enqueue-ceiling.yml @@ -259,6 +259,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/tq/req/enqueue-deadlock.yml b/spec/score/tq/req/enqueue-deadlock.yml index 4857ab5f..44bd72d4 100644 --- a/spec/score/tq/req/enqueue-deadlock.yml +++ b/spec/score/tq/req/enqueue-deadlock.yml @@ -114,6 +114,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/tq/req/enqueue-fifo.yml b/spec/score/tq/req/enqueue-fifo.yml index 5c4974ec..0a879e28 100644 --- a/spec/score/tq/req/enqueue-fifo.yml +++ b/spec/score/tq/req/enqueue-fifo.yml @@ -68,6 +68,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/tq/req/enqueue-mrsp.yml b/spec/score/tq/req/enqueue-mrsp.yml index 38bfc336..faf0825b 100644 --- a/spec/score/tq/req/enqueue-mrsp.yml +++ b/spec/score/tq/req/enqueue-mrsp.yml @@ -290,6 +290,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/score/tq/req/enqueue-priority.yml b/spec/score/tq/req/enqueue-priority.yml index 06be6bab..a8fd1f9b 100644 --- a/spec/score/tq/req/enqueue-priority.yml +++ b/spec/score/tq/req/enqueue-priority.yml @@ -295,6 +295,7 @@ test-context-support: null test-description: null test-header: code: null + freestanding: false includes: [] local-includes: - tx-thread-queue.h diff --git a/spec/spec/test-header.yml b/spec/spec/test-header.yml index a15fc5dc..76509f41 100644 --- a/spec/spec/test-header.yml +++ b/spec/spec/test-header.yml @@ -16,6 +16,13 @@ spec-info: header code is placed at file scope after the general test declarations and before the test run function declaration. spec-type: optional-str + freestanding: + description: | + The value shall be ``true``, if the test case is freestanding, + otherwise ``false``. Freestanding test cases are not statically + registered. Instead the generated test runner uses + :c:func:`T_case_begin` and :c:func:`T_case_end`. + spec-type: bool includes: description: | It shall be a list of header files included by the header file via |