Damien George
96fd80db13
py/objexcept: Prevent infinite recursion when allocating exceptions.
...
The aim of this patch is to rewrite the functions that create exception
instances (mp_obj_exception_make_new and mp_obj_new_exception_msg_varg) so
that they do not call any functions that may raise an exception. Otherwise
it's possible to create infinite recursion with an exception being raised
while trying to create an exception object.
The two main things that are done to accomplish this are:
1. Change mp_obj_new_exception_msg_varg to just format the string, then
call mp_obj_exception_make_new to actually create the exception object.
2. In mp_obj_exception_make_new and mp_obj_new_exception_msg_varg try to
allocate all memory first using functions that don't raise exceptions
If any of the memory allocations fail (return NULL) then degrade
gracefully by trying other options for memory allocation, eg using the
emergency exception buffer.
3. Use a custom printer backend to conservatively format strings: if it
can't allocate memory then it just truncates the string.
As part of this rewrite, raising an exception without a message, like
KeyError(123), will now use the emergency buffer to store the arg and
traceback data if there is no heap memory available.
Memory use with this patch is unchanged. Code size is increased by:
bare-arm: +136
minimal x86: +124
unix x64: +72
unix nanbox: +96
stm32: +88
esp8266: +92
cc3200: +80
2017-09-21 15:24:57 +10:00
Paul Sokolovsky
f54b3527f2
tests/run-tests: Fix copy-paste mistake in var name.
2017-09-10 22:38:18 +03:00
Paul Sokolovsky
d1f909005a
tests/run-tests: Skip class_inplace_op for minimal profile.
...
Don't assume that MICROPY_PY_ALL_SPECIAL_METHODS is defined, as required
for inplace special methods.
Fixes Zephyr tests.
2017-09-10 22:32:08 +03:00
Paul Sokolovsky
d6f9d64d97
tests/class_reverse_op: Test for reverse arith ops special methods.
...
This test should be run only if support for reverse ops is enabled, so
the corresponding feature_check is added to run-tests.
2017-09-10 17:05:57 +03:00
Damien George
4a93801c12
all: Update Makefiles and others to build with new ports/ dir layout.
...
Also renames "stmhal" to "stm32" in documentation and everywhere else.
2017-09-06 14:09:13 +10:00
Alexander Steffen
55f33240f3
all: Use the name MicroPython consistently in comments
...
There were several different spellings of MicroPython present in comments,
when there should be only one.
2017-07-31 18:35:40 +10:00
Damien George
f69ab79ec8
py/objgenerator: Allow to hash generators and generator instances.
...
Adds nothing to the code size, since it uses existing empty slots in the
type structures.
2017-07-07 11:47:38 +10:00
Damien George
4a6c0fda78
tests: Auto detect floating point capabilites of the target.
...
The floating-point precision of the target is detected (0, 30, 32 or 64)
and only those tests which can run on the target will be run.
2017-06-26 13:47:00 +10:00
Paul Sokolovsky
57b5ee2fcf
tests/run-tests: Don't post-process CRASH result in any way.
...
If we got a CRASH result, return early, similar to SKIP. This is important
because previous refactor changed branching logic a bit, so CRASH now gets
post-processed into CRASH\n, which broke remote hardware tests.
2017-04-16 17:59:11 +03:00
Paul Sokolovsky
5b8122f2bb
tests/run-tests: Search feature checks wrt to main script location.
...
If run-tests script is run from another dir, we still want to look up
feature checks in run-tests' dir.
2017-04-14 17:07:13 +03:00
Damien George
805b1c8bc3
tests/run-tests: Update names of tests that may need skipping.
2017-04-04 12:26:43 +10:00
Paul Sokolovsky
831e157226
tests/run-tests: Introduce generic "minimal" target.
...
Used e.g. by Zephyr port.
2017-04-03 10:20:48 +03:00
Paul Sokolovsky
b099aeb3ca
run-tests: Add feature check for "const" keyword and skip related tests.
2017-04-02 22:52:18 +03:00
Paul Sokolovsky
5b2db4bb51
tests/run-tests: Be sure to close Pyboard object on completion.
...
So underlying device was properly closed too.
2017-04-02 20:49:16 +03:00
Damien George
c772817dee
tests/micropython: Add tests for micropython.schedule().
2017-03-20 15:20:26 +11:00
Damien George
923ec1169f
tests/run-tests: Re-instate skipping of doubleprec test on pyboard.
2017-03-14 22:07:52 +11:00
Paul Sokolovsky
854bb322bf
tests/feature_check/int_big: Rework "big int" detection.
...
MICROPY_LONGINT_IMPL_LONGLONG doesn't have overflow detection, so just
parsing a large number won't give an error, we need to print it out
to check that the whole number was parsed.
2017-03-10 02:11:43 +01:00
Paul Sokolovsky
3ab6aa3a6d
tests/basic: Split tests into working with small ints and not working.
...
Tests which don't work with small ints are suffixed with _intbig.py. Some
of these may still work with long long ints and need to be reclassified
later.
2017-03-04 00:13:27 +03:00
Paul Sokolovsky
89e570a5b4
tests/run-tests: Check for big int availability and skip related tests.
...
Big aka arbitrary-precision integers (implemented by MPZ module) are used
in tests starting with "int_big_" or ending with "_intbig".
2017-03-03 20:16:59 +03:00
Damien George
019048a6dc
tests/micropython: Add test for iterating with the heap locked.
2017-02-16 19:11:34 +11:00
Paul Sokolovsky
ce2e0eeb7b
tests/run-tests: Allow to skip tests using async/await keywords.
2017-02-14 22:03:25 +03:00
stijn
c6fd9ba4f3
tests: Add option to not clear MICROPYPATH when running tests
...
This allows using the test runner for other scenarios than just
testing uPy itself.
The principle of comparing either to CPython or else to a .exp
file is really handy but to be able to test custom modules not
built into micropython.exe one needs to be able to specify the
module search path a.k.a MICROPYPATH.
2017-02-14 20:19:00 +03:00
Paul Sokolovsky
aee723ed4c
tests/run-tests: Skip frozenset tests if set literal syntax is not available.
2017-01-31 00:25:09 +03:00
stijn
533129f835
tests: Make sure special tests can be skipped as well.
...
Fixes #2806 .
2017-01-24 00:30:55 +11:00
Damien George
1864f90e9a
tests: Add test for builtin help function.
2017-01-22 11:56:16 +11:00
Damien George
96baaa68a4
tests: Update tests, and add new ones, for recent generator tweaks.
2017-01-17 00:17:44 +11:00
Paul Sokolovsky
26f00ff154
tests/run-tests: Allow to skip set tests.
...
If sets are not enabled, set literals lead to SyntaxError during parsing,
so it requires feature_check. Set tests are skipped based on set_*.py
pattern.
2017-01-05 00:16:29 +03:00
Rami Ali
f397e1fdf0
tests/thread: Improve modthread.c test coverage.
2016-12-29 13:27:50 +11:00
Damien George
cdec7ba30e
tests: Add a coverage test for printing the parse-tree.
2016-12-22 11:26:06 +11:00
Rami Ali
5d06a74303
tests/basics: Improve test coverage for generators.
2016-12-20 16:19:56 +11:00
Damien George
1e7a801e2d
tests/run-tests: For REPL tests make sure the REPL is exited at the end.
2016-12-20 15:13:49 +11:00
Damien George
1f43d49f9e
tests/micropython: Move alloc-less traceback test to separate test file.
...
The native emitter doesn't provide proper traceback info so this test
should not be run in that case.
2016-11-21 17:39:23 +11:00
Damien George
1e3a7c4ac5
tests/run-tests: Enable extmod/machine1.py on pyboard.
...
It now works.
2016-10-17 13:18:27 +11:00
Damien George
5e22afce41
tests: Improve test coverage of py/compile.c.
2016-10-11 12:30:32 +11:00
stijn
7f19b1c3eb
tests: Fix expected output of verbose cmdline test
...
The output might contain more than one line ending in 5b so properly skip
everything until the next known point.
This fixes test failures in appveyor debug builds.
2016-10-05 12:58:50 +02:00
Damien George
cd20027f56
tests/run-tests: Disable cmdline/cmd_showbc test on Windows.
...
Disabled until a proper fix is found.
2016-10-04 14:42:51 +11:00
Damien George
3f5fe6269e
tests/run-tests: Add --via-mpy option to run test from precompiled code.
...
With mpy-cross built, tests can now be run by first compiling them to .mpy
files, and then executing the .mpy file. Usage: ./run-tests --via-mpy
2016-09-20 12:19:35 +10:00
Damien George
bb954d80a4
tests: Get cmdline verbose tests running again.
...
The showbc function now no longer uses the system printf so works
correctly.
2016-09-20 11:33:19 +10:00
Damien George
763e04bba5
tests/run-tests: Disable thread/stress_recurse.py test on Travis.
...
It has reliability issues (cause unknown at this time).
2016-09-08 13:06:29 +10:00
Damien George
8f8f699eb7
tests/run-tests: Disable thread_gc1.py test on Travis.
...
It has reliability issues (cause unknown at this time).
2016-08-27 23:41:16 +10:00
Damien George
78bc31e294
tests/run-tests: Disable thread/stress_heap.py when running on Travis.
...
It has reliability issues and sometimes fails on Travis (reason currently
unknown).
2016-08-25 14:06:40 +10:00
Damien George
567e7fcd12
tests/run-tests: Disable thread/thread_lock4.py on Travis.
...
It has reliability issues that need to be worked out.
2016-08-17 13:48:09 +10:00
Paul Sokolovsky
6ead9f6f3d
tests/run-tests: Make "regex'ed .exp" facility available to device tests.
...
Required to pass bytes_compare3.py (opptional warnings) on devices.
2016-07-26 23:08:33 +03:00
Paul Sokolovsky
b652ee705b
tests/bytes_compare: Rework test for bytes <-> str comparison.
...
This may produce a warning, depending on MicroPython configuration.
2016-07-22 12:02:04 +03:00
Damien George
2b5a1067c0
tests/run-tests: If running thread tests on unix, don't run mutate ones.
...
They will fail because the GIL is disabled on the unix build.
2016-07-09 16:52:57 +01:00
Paul Sokolovsky
5ec11f565b
tests/run-tests: Factor out list supported external boards.
...
To get consistent error messages, etc.
2016-05-07 18:45:16 +03:00
Paul Sokolovsky
3c2e40b008
tests/run-tests: Add gen_yield_from_stopped to skipped for --emit=native.
...
Just as the rest of generator tests, which aren't yet supoorted for
native.
2016-04-28 10:24:27 +03:00
Damien George
c2a519bab9
tests: Skip async tests for native emitter.
2016-04-13 15:56:42 +01:00
Damien George
2c915e1ae6
py: Implement basic with support in native emitter.
2016-04-07 08:53:24 +01:00
Damien George
157056ecdf
tests: Add new subdir "stress/" specifically for stress tests.
2016-03-15 13:20:18 +00:00
Damien George
9996adc37d
tests/run-tests: Add cmd line option "--heapsize".
...
This allows you to specify the heapsize that unix will use when running
the test suite, eg: ./run-tests --heapsize 16k
2016-03-15 13:04:43 +00:00
Damien George
f0e2d13fd2
tests/run-tests: Simplify handling of newline in output from tests.
...
Now, all output has newlines converted to \n, regardless of port or
platform.
2016-03-08 10:20:38 +00:00
Damien George
d964873e56
tests/run-tests: Fix logic when selecting test-dirs for a given target.
2016-03-07 12:00:16 +00:00
Paul Sokolovsky
2382d30318
tests/run-tests: Skips for esp8266.
2016-03-03 15:38:43 +02:00
danicampora
5148860332
tests: Skip uctypes and urandom tests not supported byt the WiPy.
2016-02-21 22:30:35 +01:00
Paul Sokolovsky
2850e7cd97
tests/run-tests: Add esp8266 target.
2016-02-13 17:03:12 +02:00
Damien George
e5ce5e2a43
tests: Skip class_bind_self.py for native emitter.
2015-12-26 13:06:50 +00:00
Damien George
7ce8860b6b
tests: Skip try-finally test for native emitter.
2015-12-24 12:49:31 +00:00
Damien George
0891cf7d2d
tests: Disable for_range.py test for native emitter (it requires yield).
2015-12-08 21:39:21 +00:00
Paul Sokolovsky
eed2f36ae2
tests/run-tests: Allow to skip complex tests if it's not compiled in.
2015-12-06 14:57:31 +02:00
Paul Sokolovsky
ff8c4188f4
tests/run-tests: Improve robustness of REPL tests.
...
Unconditionally wait for MicroPython banner. On overloaded systems, when
using emulators, etc. initial executable startup may take more than 20ms.
2015-11-24 19:52:30 +02:00
stijn
24b03561bd
tests: Make sure test output has \r\n line-ends when running on Windows
...
This is the case already when using just subprocess.check_output, but in
the special cases (cmdline, meminfo, ...) the carriage return gets lost
during output processing so restore it in the end.
This fixes the micropython/meminfo.py test on Windows.
2015-10-31 14:11:19 +03:00
Damien George
e693e52442
tests: Disable some tests for pyboard that do not run correctly.
2015-10-20 23:55:50 +01:00
Damien George
4300c7dba2
py: Remove dependency on printf/fwrite in mp_plat_print.
...
See issue #1500 .
2015-10-15 00:05:55 +01:00
Damien George
0334058fa4
Rename "Micro Python" to "MicroPython" in REPL, help, readme's and misc.
2015-10-12 00:06:25 +01:00
Daniel Campora
d5de1bf853
tests: Skip uheapq1 test if target is WiPy.
2015-09-27 18:47:35 +02:00
Daniel Campora
958e273336
tests: Skip extmod machine tests when target is WiPy.
2015-09-27 17:35:45 +02:00
stijn
dfa915a6af
tests: Omit process output parsing in case of CalledProcessError
...
Adding a line-end makes the determination of skip_native fail as it compares
the output against b'CRASH' while it is in fact b'CRASH\n'
2015-09-23 11:50:24 +01:00
Daniel Campora
88ca6c94d9
tests: Ignore exception chain test on the WiPy.
...
Fails because warnings are not enabled on the CC3200.
2015-09-10 07:59:53 +02:00
Daniel Campora
d5e256486e
cc3200: Re-work Pin class according to the new API.
...
Also add relevant test.
2015-09-10 07:59:35 +02:00
Paul Sokolovsky
1b693543aa
tests: Skip exception_chain.py with native emitter.
2015-09-01 11:53:27 +03:00
Paul Sokolovsky
a3fe307400
tests: Consolidate all feature check snippets under feature_check/.
2015-08-30 11:36:42 +03:00
Paul Sokolovsky
0a8b5d160b
run-tests: Allow to skip byteorder-dependent tests.
...
If byteorder of MicroPython under test and host CPython differ.
2015-08-30 00:37:53 +03:00
stijn
dbfba6a20e
tests: Fix exceptions when running cmdline tests on windows
...
- subprocess.check_output can only handle strings on windows, not bytes,
so convert the arguments as such
- the pty module is for posix systems only so skip the tests needing it
in case it is not available
2015-08-08 12:35:27 +01:00
stijn
7ede3ec4b1
tests: Always use forward slashes for paths
...
This is more consistent and fixes run_micropython on windows as it uses
forward slahses to compare paths
2015-08-08 12:35:27 +01:00
Tom Soulanille
89852d38ef
run-tests: Test REPL emacs keys, but only if present.
...
Uses cmdline/repl_emacs_check.py to check for presence of emacs keys in
repl before doing full feature test.
2015-08-06 00:03:44 +01:00
Tom Soulanille
3dd0b69e46
run-tests: Use PTY when running REPL tests.
2015-07-26 15:23:11 +01:00
Daniel Campora
cd14188bc8
tools: Add telnet support to pyboard.py.
...
The adapter class "TelnetToSerial" is used to access the Telnet
connection using the same API as with the serial connection. The
function pyboard.run-test() has been removed to made the module
generic and because this small test is no longer needed.
2015-07-26 14:02:34 +01:00
Damien George
e44c1d3ace
tests: Split out json float tests to separate files.
2015-06-25 10:50:00 +01:00
Daniel Campora
186b355b28
tests: Add support for the WiPy in run-tests script.
...
The --pyboard param has been replaced by --target which defaults to
'unix'. Possible values at this moment are 'unix', 'pyboard' and
'wipy'. Now is also possible to select the baud rate of the serial
device when calling the script.
2015-06-25 10:45:25 +01:00
Damien George
031278f661
unix: Allow to cat a script into stdin from the command line.
...
See issue #1306 .
2015-06-04 23:42:45 +01:00
Paul Sokolovsky
8b85d14b92
modsys: Add basic sys.exc_info() implementation.
...
The implementation is very basic and non-compliant and provided solely for
CPython compatibility. The function itself is bad Python2 heritage, its
usage is discouraged.
2015-04-25 03:49:23 +03:00
Damien George
9988618e0e
py: Implement full func arg passing for native emitter.
...
This patch gets full function argument passing working with native
emitter. Includes named args, keyword args, default args, var args
and var keyword args. Fully Python compliant.
It reuses the bytecode mp_setup_code_state function to do all the hard
work. This function is slightly adjusted to accommodate native calls,
and the native emitter is forced a bit to emit similar prelude and
code-info as bytecode.
2015-04-07 22:43:28 +01:00
Damien George
78772ada0d
py: Implement calling functions with *args in native emitter.
2015-04-06 22:48:21 +01:00
Damien George
9dd3640464
tests: Add missing tests for builtins, and many other things.
2015-04-04 22:05:30 +01:00
Damien George
4cd9ced8dc
py: Implement closures in native code generator.
...
Currently supports only x64 and Thumb2 archs.
2015-04-03 15:05:53 +01:00
Damien George
23d7fd526d
tests: Skip some new tests when testing native emitter.
2015-03-25 23:33:48 +00:00
Damien George
1004535237
tests: Make cmdline tests more stable by using regex for matching.
2015-03-20 17:25:25 +00:00
Damien George
143c34109c
tests: Add ability to test uPy cmdline executable.
...
This allows to test options passed to cmdline executable, as well as the
behaviour of the REPL.
2015-03-13 10:58:34 +00:00
Damien George
72ddcfd9ff
tests: Skip basics/boundmeth1.py for native emitter.
2015-03-03 18:06:45 +00:00
Damien George
e8b877be60
tests: Disable float/cmath_fun.py for native emitter.
2015-02-02 20:01:51 +00:00
Damien George
b6e6b5277f
py: Implement proper re-raising in native codegen's finally handler.
...
This allows an exception to propagate correctly through a finally
handler.
2015-01-21 17:00:01 +00:00
Damien George
ad2307c92c
py: Temporary fix for conversion of float to int when fits in small int.
...
Addresses issue #1044 (see also #1040 ). Could do with a better fix.
2015-01-07 12:10:47 +00:00
Damien George
816a46a4ab
tests: Disable float/float2int.py on pyboard (needs double prec).
2014-12-31 18:46:18 +00:00
Paul Sokolovsky
978f4ca2e1
run-tests: Allow to run testuite against Windows build on Linux (using Wine).
...
Just adjust line-endings of micropython.exe output, the rest should be
handled by Wine (automagically on properly configured distro).
To run:
MICROPY_MICROPYTHON=../windows/micropython.exe ./run-tests
2014-12-20 16:53:46 +02:00
stijn
f5efefd5a0
windows: Correctly interpret skipped tests, enable uhashlib and ubinascii
2014-12-20 16:52:22 +02:00
Paul Sokolovsky
138562ccd9
run-tests: Skip native/viper tests based on prefix.
...
Otherwise, new tests are forgotten to be added to explicit lists. Issue
found running on Debian/ARM.
2014-12-13 00:51:24 +02:00
Paul Sokolovsky
1ca28bd570
run-tests: Reset MICROPYPATH, to make sure tests use only builtin modules.
2014-12-12 00:58:07 +02:00
Paul Sokolovsky
dbc7854355
run-tests: PEP8 fix.
2014-12-12 00:58:07 +02:00
Damien George
f905145c6d
tests: Disable print_exception test when using native emitter.
2014-12-11 17:34:55 +00:00