From d792d9e49ea89aa8a742f57d70e5b59c9d68939e Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 8 May 2015 09:18:38 +0100 Subject: [PATCH] unix: Make extra-coverage function callable from Python scripts. This allows the output of the extra-coverage tests to be checked using the normal run-tests script. --- .travis.yml | 2 -- tests/unix/extra_coverage.py | 8 ++++++++ tests/unix/extra_coverage.py.exp | 7 +++++++ unix/coverage.c | 9 +++++---- unix/main.c | 13 +++++++------ 5 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 tests/unix/extra_coverage.py create mode 100644 tests/unix/extra_coverage.py.exp diff --git a/.travis.yml b/.travis.yml index 5d9a383c1..c598783f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,8 +35,6 @@ script: - make -C unix CC=gcc-4.7 coverage - (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../unix/micropython_coverage ./run-tests) - (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../unix/micropython_coverage ./run-tests --emit native) - # TODO the output of this extra coverage test is not checked - - unix/micropython_coverage --coverage after_success: - (cd unix && coveralls --root .. --build-root . --gcov $(which gcov-4.7) --gcov-options '\-o build-coverage/' --include py --include extmod) diff --git a/tests/unix/extra_coverage.py b/tests/unix/extra_coverage.py new file mode 100644 index 000000000..8f330f1da --- /dev/null +++ b/tests/unix/extra_coverage.py @@ -0,0 +1,8 @@ +try: + extra_coverage +except NameError: + print("SKIP") + import sys + sys.exit() + +extra_coverage() diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp new file mode 100644 index 000000000..565b0dd04 --- /dev/null +++ b/tests/unix/extra_coverage.py.exp @@ -0,0 +1,7 @@ +ame__ + +__name__ path argv version +version_info implementation platform byteorder +maxsize exit stdin stdout +stderr exc_info print_exception +ementation diff --git a/unix/coverage.c b/unix/coverage.c index 48dbfd5c7..bc66ec3f1 100644 --- a/unix/coverage.c +++ b/unix/coverage.c @@ -7,13 +7,11 @@ #if defined(MICROPY_UNIX_COVERAGE) // function to run extra tests for things that can't be checked by scripts -void run_extra_coverage_tests(void); - -void run_extra_coverage_tests(void) { +STATIC mp_obj_t extra_coverage(void) { // repl autocomplete { const char *str; - mp_uint_t len = mp_repl_autocomplete("__", 2, &mp_plat_print, &str); + mp_uint_t len = mp_repl_autocomplete("__n", 3, &mp_plat_print, &str); printf("%.*s\n", (int)len, str); mp_store_global(MP_QSTR_sys, mp_import_name(MP_QSTR_sys, mp_const_none, MP_OBJ_NEW_SMALL_INT(0))); @@ -21,6 +19,9 @@ void run_extra_coverage_tests(void) { len = mp_repl_autocomplete("sys.impl", 8, &mp_plat_print, &str); printf("%.*s\n", (int)len, str); } + + return mp_const_none; } +MP_DEFINE_CONST_FUN_OBJ_0(extra_coverage_obj, extra_coverage); #endif diff --git a/unix/main.c b/unix/main.c index abea15728..9794f6083 100644 --- a/unix/main.c +++ b/unix/main.c @@ -356,6 +356,13 @@ int main(int argc, char **argv) { mp_obj_list_init(mp_sys_argv, 0); + #if defined(MICROPY_UNIX_COVERAGE) + { + MP_DECLARE_CONST_FUN_OBJ(extra_coverage_obj); + mp_store_global(QSTR_FROM_STR_STATIC("extra_coverage"), (mp_obj_t)&extra_coverage_obj); + } + #endif + // Here is some example code to create a class and instance of that class. // First is the Python, then the C code. // @@ -434,12 +441,6 @@ int main(int argc, char **argv) { MP_STATE_VM(mp_optimise_value) = 0; for (char *p = argv[a] + 1; *p && *p == 'O'; p++, MP_STATE_VM(mp_optimise_value)++); } - #if defined(MICROPY_UNIX_COVERAGE) - } else if (strcmp(argv[a], "--coverage") == 0) { - void run_extra_coverage_tests(void); - run_extra_coverage_tests(); - ret = 0; - #endif } else { return usage(argv); }