circuitpython/tests
Jeff Epler 54d97251fe modstruct: Improve compliance with python3
While checking whether we can enable -Wimplicit-fallthrough, I encountered
a diagnostic in mp_binary_set_val_array_from_int which led to discovering
the following bug:
```
>>> struct.pack("xb", 3)
b'\x03\x03'
```
That is, the next value (3) was used as the value of a padding byte, while
standard Python always fills "x" bytes with zeros.  I initially thought
this had to do with the unintentional fallthrough, but it doesn't.
Instead, this code would relate to an array.array with a typecode of
padding ('x'), which is ALSO not desktop Python compliant:
```
>>> array.array('x', (1, 2, 3))
array('x', [1, 0, 0])
```
Possibly this is dead code that used to be shared between struct-setting
and array-setting, but it no longer is.

I also discovered that the argument list length for struct.pack
and struct.pack_into were not checked, and that the length of binary data
passed to array.array was not checked to be a multiple of the element
size.

I have corrected all of these to conform more closely to standard Python
and revised some tests where necessary.  Some tests for micropython-specific
behavior that does not conform to standard Python and is not present
in CircuitPython was deleted outright.
2020-09-12 14:07:23 -05:00
..
basics modstruct: Improve compliance with python3 2020-09-12 14:07:23 -05:00
bench Updated tests; removed try/catch for ucollections 2018-05-14 14:43:34 -04:00
circuitpython tests: Fixup tests for 3.x on Rosie 2017-11-16 10:56:20 -08:00
cmdline update expected result with new method 2020-09-07 07:11:23 -05:00
cpydiff WIP: after merge; before testing 2018-07-11 16:45:30 -04:00
extmod Fix stream version and add basic readinto test 2020-07-10 17:33:17 -07:00
feature_check Fix up end of file and trailing whitespace. 2020-06-03 10:56:35 +01:00
float Fix up end of file and trailing whitespace. 2020-06-03 10:56:35 +01:00
import tests: Add .exp files for basics/parser and import/import_override. 2020-04-01 16:31:33 -05:00
inlineasm Fix up end of file and trailing whitespace. 2020-06-03 10:56:35 +01:00
io tests: Add tests using "file" argument in print and sys.print_exception. 2018-06-20 16:08:25 +10:00
jni Fix up end of file and trailing whitespace. 2020-06-03 10:56:35 +01:00
micropython py/emit: Combine yield value and yield-from emit funcs into one. 2018-05-23 00:22:35 +10:00
misc modstruct: Improve compliance with python3 2020-09-12 14:07:23 -05:00
net_hosted tests/net_hosted: Add test for socket connect() and poll() behaviour. 2017-11-23 10:45:12 +11:00
net_inet tests/net_inet: Update tls test to work with CPython and incl new site. 2017-10-26 12:29:24 +11:00
pyb README: Remove a statement that's not particularly true at the moment 2020-06-25 11:44:21 -05:00
pybnative
stress tests: Move recursive tests to the tests/stress/ subdir. 2018-04-10 14:43:52 +10:00
thread Add license to some obvious files. 2020-07-06 19:16:25 +01:00
unicode py/objstr: Add check for valid UTF-8 when making a str from bytes. 2017-09-06 16:43:09 +10:00
unix Update tests for new autocomplete behavior 2019-05-06 14:19:07 -07:00
wipy README: Remove a statement that's not particularly true at the moment 2020-06-25 11:44:21 -05:00
README all: Remove trailing spaces, per coding conventions. 2017-07-19 13:12:10 +10:00
pyboard.py tests: Point pyboard.py to tools/cpboard.py 2018-06-02 19:09:54 +02:00
run-bench-tests tests/run-bench-tests: Update locations of executables, now in ports/. 2017-09-08 12:11:15 +10:00
run-tests also disable async_coroutine test in native emitter 2020-07-23 20:40:16 -07:00
run-tests-exp.py unix: Rename "_os" module to "uos" for consistency with baremetal ports. 2015-12-12 00:04:35 +02:00
run-tests-exp.sh
skip_if.py Add license to some obvious files. 2020-07-06 19:16:25 +01:00

README

This directory contains tests for various functionality areas of MicroPython.
To run all stable tests, run "run-tests" script in this directory.

Tests of capabilities not supported on all platforms should be written
to check for the capability being present. If it is not, the test
should merely output 'SKIP' followed by the line terminator, and call
sys.exit() to raise SystemExit, instead of attempting to test the
missing capability. The testing framework (run-tests in this
directory, test_main.c in qemu_arm) recognizes this as a skipped test.

There are a few features for which this mechanism cannot be used to
condition a test. The run-tests script uses small scripts in the
feature_check directory to check whether each such feature is present,
and skips the relevant tests if not.

When creating new tests, anything that relies on float support should go in the
float/ subdirectory.  Anything that relies on import x, where x is not a built-in
module, should go in the import/ subdirectory.