diff --git a/.travis.yml b/.travis.yml index 5d9a383c168b1e56efc116f402d49dd6b3594b50..c598783f44039ebd8ff00291f33e9005b585d5bc 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 0000000000000000000000000000000000000000..8f330f1da2a99c420bbb1dd75b02d1135b19e4de --- /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 0000000000000000000000000000000000000000..565b0dd04078f6f83b3ca6b4d45433b10d69c056 --- /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 48dbfd5c7c1563c30f70efeb3cdf058b4be7f4f4..bc66ec3f11a1d6bd5dbef333323b9882d7540352 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 abea15728676763078dea181903348dfd35445b8..9794f608365c0ea0343e5a7995efcc261b4700a4 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); }