Merge pull request #9527 from bridadan/remove_yotta_references

Remove yotta references within testing frameworks
pull/9572/head
Martin Kojtal 2019-01-31 11:16:54 +01:00 committed by GitHub
commit 7c578cf2c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 37 additions and 120 deletions

View File

@ -55,6 +55,7 @@ For example, the `{{timeout;120}}}` string is a key-value message where the key
## Test example
```c++
#include "mbed.h"
#include "greentea-client/test_env.h"
#include "utest/utest.h"
#include "unity/unity.h"
@ -83,7 +84,7 @@ status_t greentea_setup(const size_t number_of_cases) {
return greentea_test_setup_handler(number_of_cases);
}
void app_start(int, char*[]) {
void main(int, char*[]) {
Harness::run(specification);
}
```

View File

@ -22,11 +22,7 @@
#define GREENTEA_CLIENT_TEST_ENV_H_
#ifdef __cplusplus
#ifdef YOTTA_GREENTEA_CLIENT_VERSION_STRING
#define MBED_GREENTEA_CLIENT_VERSION_STRING YOTTA_GREENTEA_CLIENT_VERSION_STRING
#else
#define MBED_GREENTEA_CLIENT_VERSION_STRING "1.3.0"
#endif
#include <stdio.h>
@ -41,7 +37,7 @@
#endif
/**
* Auxilary macros to keep mbed-drivers compatibility with utest before greentea-client
* Ensure compatibility with utest
*/
#define TEST_ENV_TESTCASE_COUNT GREENTEA_TEST_ENV_TESTCASE_COUNT
#define TEST_ENV_TESTCASE_START GREENTEA_TEST_ENV_TESTCASE_START

View File

@ -158,8 +158,8 @@ extern bool coverage_report;
*
* Generates preamble of message sent to notify host about code coverage data dump.
*
* This function is used by mbedOS software
* (see: mbed-drivers/source/retarget.cpp file) to generate code coverage
* This function is used by Mbed OS
* (see: mbed-os/platform/mbed_retarget.cpp) to generate code coverage
* messages to host. When code coverage feature is turned on slave will
* print-out code coverage data in form of key-value protocol.
* Message with code coverage data will contain message name, path to code
@ -176,8 +176,8 @@ void greentea_notify_coverage_start(const char *path) {
/**
* \brief Sufix for code coverage message to master (closing statement)
*
* This function is used by mbedOS software
* (see: mbed-drivers/source/retarget.cpp file) to generate code coverage
* This function is used by Mbed OS
* (see: mbed-os/platform/mbed_retarget.cpp) to generate code coverage
* messages to host. When code coverage feature is turned on slave will
* print-out code coverage data in form of key-value protocol.
* Message with code coverage data will contain message name, path to code

View File

@ -25,10 +25,11 @@ The order of handler execution is:
## Example
The following example showcases a lot of functionality and proper integration with the [Greentea testing automation framework](https://github.com/ARMmbed/greentea), while making use of the [unity test macros](https://github.com/ARMmbed/mbed-os/tree/master/features/frameworks/unity):
The following example showcases a lot of functionality and proper integration with the [Greentea test tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea), while making use of the [unity test macros](https://github.com/ARMmbed/mbed-os/tree/master/features/frameworks/unity):
```cpp
#include "mbed-drivers/test_env.h"
#include "mbed.h"
#include "greentea-client/test_env.h"
#include "utest/utest.h"
#include "unity/unity.h"
@ -45,6 +46,7 @@ status_t test_repeats_setup(const Case *const source, const size_t index_of_case
printf("Setting up for '%s'\n", source->get_description());
return status;
}
control_t test_repeats(const size_t call_count) {
printf("Called for the %u. time\n", call_count);
TEST_ASSERT_NOT_EQUAL(3, call_count);
@ -58,10 +60,12 @@ void test_callback_validate() {
// Validate the callback
Harness::validate_callback();
}
control_t test_asynchronous() {
TEST_ASSERT_TRUE_MESSAGE(true, "(true == false) o_O");
// Set up a callback in the future. This may also be an interrupt!
minar::Scheduler::postCallback(test_callback_validate).delay(minar::milliseconds(100));
EventQueue *queue = mbed_event_queue();
queue->call_in(100, test_callback_validate);
// Set a 200ms timeout starting from now
return CaseTimeout(200);
}
@ -72,7 +76,8 @@ control_t test_asynchronous_timeout(const size_t call_count) {
// but automatically repeat only this handler on timeout.
if (call_count >= 5) {
// but after the 5th call, the callback finally gets validated
minar::Scheduler::postCallback(test_callback_validate).delay(minar::milliseconds(100));
EventQueue *queue = mbed_event_queue();
queue->call_in(100, test_callback_validate);
}
return CaseRepeatHandlerOnTimeout(200);
}
@ -95,7 +100,7 @@ Case cases[] = {
// Declare your test specification with a custom setup handler
Specification specification(greentea_setup, cases);
void app_start(int, char**)
int main()
{ // Run the test specification
Harness::run(specification);
}
@ -155,7 +160,7 @@ Please see the `utest/types.h` file for a detailed description.
1. `status_t case_teardown_handler_t(const Case *const source, const size_t passed, const size_t failed, const failure_t reason)`: called after execution of each test case, and if testing is aborted.
1. `status_t case_failure_handler_t(const Case *const source, const failure_t reason)`: called whenever a failure occurs during the execution of a test case.
All handlers are defaulted for integration with the [Greentea testing automation framework](https://github.com/ARMmbed/greentea).
All handlers are defaulted for integration with the [Greentea testing tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea).
### Test Case Handlers
@ -416,4 +421,4 @@ void main() // or whatever your custom entry point is
}
}
}
```
```

View File

@ -15,8 +15,6 @@
* limitations under the License.
*/
// define this to get rid of the minar dependency.
#define YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER 1
#include "mbed.h"
#include "greentea-client/test_env.h"

View File

@ -15,8 +15,6 @@
* limitations under the License.
*/
// define this to get rid of the minar dependency.
#define YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER 1
#include "mbed.h"
#include "greentea-client/test_env.h"

View File

@ -18,50 +18,9 @@
#include "utest/utest_shim.h"
#include "utest/utest_stack_trace.h"
#if UTEST_SHIM_SCHEDULER_USE_MINAR
#include "minar/minar.h"
static int32_t utest_minar_init()
{
return 0;
}
static void *utest_minar_post(const utest_v1_harness_callback_t callback, const uint32_t delay_ms)
{
void *handle = minar::Scheduler::postCallback(callback).delay(minar::milliseconds(delay_ms)).getHandle();
return handle;
}
static int32_t utest_minar_cancel(void *handle)
{
int32_t ret = minar::Scheduler::cancelCallback(handle);
return ret;
}
static int32_t utest_minar_run()
{
return 0;
}
extern "C" {
static const utest_v1_scheduler_t utest_v1_scheduler =
{
utest_minar_init,
utest_minar_post,
utest_minar_cancel,
utest_minar_run
};
utest_v1_scheduler_t utest_v1_get_scheduler()
{
return utest_v1_scheduler;
}
}
#elif UTEST_SHIM_SCHEDULER_USE_US_TICKER
#ifdef YOTTA_MBED_HAL_VERSION_STRING
# include "mbed-hal/us_ticker_api.h"
#else
#include "platform/SingletonPtr.h"
#include "Timeout.h"
using mbed::Timeout;
#endif
// only one callback is active at any given time
static volatile utest_v1_harness_callback_t minimal_callback;
@ -79,7 +38,7 @@ static void ticker_handler()
static int32_t utest_us_ticker_init()
{
UTEST_LOG_FUNCTION();
// initialize the Timeout object to makes sure it is not initialized in
// initialize the Timeout object to makes sure it is not initialized in
// interrupt context.
utest_timeout_object.get();
return 0;
@ -88,13 +47,13 @@ static void *utest_us_ticker_post(const utest_v1_harness_callback_t callback, ti
{
UTEST_LOG_FUNCTION();
timestamp_t delay_us = delay_ms *1000;
if (delay_ms) {
ticker_callback = callback;
// fire the interrupt in 1000us * delay_ms
utest_timeout_object->attach_us(ticker_handler, delay_us);
}
}
else {
minimal_callback = callback;
}
@ -142,10 +101,3 @@ utest_v1_scheduler_t utest_v1_get_scheduler()
return utest_v1_scheduler;
}
}
#endif
#ifdef YOTTA_CORE_UTIL_VERSION_STRING
// their functionality is implemented using the CriticalSectionLock class
void utest_v1_enter_critical_section(void) {}
void utest_v1_leave_critical_section(void) {}
#endif

View File

@ -41,11 +41,6 @@ namespace v1 {
* The harness executes the test specification in an asynchronous fashion, therefore
* `run()` returns immediately.
*
* By default, this harness uses the MINAR scheduler for asynchronous callbacks.
* If you wamt to provide your own custom scheduler, set `config.utest.use_custom_scheduler` to `true`
* inside your yotta config and set a custom scheduler implementation using the `set_scheduler()` function.
* You must set the scheduler before running a specification.
*
* @note In case of an test abort, the harness will busy-wait and never finish.
*/
class Harness

View File

@ -27,50 +27,22 @@
#include <stdio.h>
#include "utest/utest_scheduler.h"
#ifdef YOTTA_CFG
# include "compiler-polyfill/attributes.h"
#else
# ifndef __deprecated_message
# if defined(__CC_ARM)
# define __deprecated_message(msg) __attribute__((deprecated))
# elif defined (__ICCARM__)
# define __deprecated_message(msg)
# else
# define __deprecated_message(msg) __attribute__((deprecated(msg)))
# endif
# endif
#endif
#ifdef YOTTA_CORE_UTIL_VERSION_STRING
# include "core-util/CriticalSectionLock.h"
# define UTEST_ENTER_CRITICAL_SECTION mbed::util::CriticalSectionLock lock
# define UTEST_LEAVE_CRITICAL_SECTION
#else
# ifndef UTEST_ENTER_CRITICAL_SECTION
# define UTEST_ENTER_CRITICAL_SECTION utest_v1_enter_critical_section()
# endif
# ifndef UTEST_LEAVE_CRITICAL_SECTION
# define UTEST_LEAVE_CRITICAL_SECTION utest_v1_leave_critical_section()
# endif
#endif
#ifndef YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER
# ifdef YOTTA_MINAR_VERSION_STRING
# define UTEST_MINAR_AVAILABLE 1
#ifndef __deprecated_message
# if defined(__CC_ARM)
# define __deprecated_message(msg) __attribute__((deprecated))
# elif defined (__ICCARM__)
# define __deprecated_message(msg)
# else
# define UTEST_MINAR_AVAILABLE 0
# define __deprecated_message(msg) __attribute__((deprecated(msg)))
# endif
# ifndef UTEST_SHIM_SCHEDULER_USE_MINAR
# define UTEST_SHIM_SCHEDULER_USE_MINAR UTEST_MINAR_AVAILABLE
# endif
# ifndef UTEST_SHIM_SCHEDULER_USE_US_TICKER
# ifdef __MBED__
# define UTEST_SHIM_SCHEDULER_USE_US_TICKER 1
# else
# define UTEST_SHIM_SCHEDULER_USE_US_TICKER 0
# endif
# endif
#endif // YOTTA_CFG_UTEST_USE_CUSTOM_SCHEDULER
#endif
#ifndef UTEST_ENTER_CRITICAL_SECTION
# define UTEST_ENTER_CRITICAL_SECTION utest_v1_enter_critical_section()
#endif
#ifndef UTEST_LEAVE_CRITICAL_SECTION
# define UTEST_LEAVE_CRITICAL_SECTION utest_v1_leave_critical_section()
#endif
#ifdef __cplusplus
extern "C" {