tests: replace all "assert" by unittest assertions
If the assert fails because of a comparison, it is useful that the test suite log contains a comparison of these values. unittest.assertEqual() and friends do that for us. * HACKING: Add a section about Python tests. * tests/sanity/style.test: Forbid the use of "assert" in Python tests. * tests/python/298.py, tests/python/341.py, tests/python/471.py, tests/python/accparse2.py, tests/python/aiger.py, tests/python/aliases.py, tests/python/alternating.py, tests/python/bdddict.py, tests/python/bdditer.py, tests/python/bugdet.py, tests/python/complement_semidet.py, tests/python/declenv.py, tests/python/decompose_scc.py, tests/python/det.py, tests/python/dualize.py, tests/python/ecfalse.py, tests/python/except.py, tests/python/game.py, tests/python/gen.py, tests/python/genem.py, tests/python/implies.py, tests/python/intrun.py, tests/python/kripke.py, tests/python/langmap.py, tests/python/ltl2tgba.py, tests/python/ltlf.py, tests/python/ltlparse.py, tests/python/ltlsimple.py, tests/python/mealy.py, tests/python/merge.py, tests/python/mergedge.py, tests/python/misc-ec.py, tests/python/optionmap.py, tests/python/origstate.py, tests/python/otfcrash.py, tests/python/parity.py, tests/python/parsetgba.py, tests/python/pdegen.py, tests/python/prodexpt.py, tests/python/randgen.py, tests/python/relabel.py, tests/python/remfin.py, tests/python/removeap.py, tests/python/rs_like.py, tests/python/satmin.py, tests/python/sbacc.py, tests/python/sccfilter.py, tests/python/sccinfo.py, tests/python/sccsplit.py, tests/python/semidet.py, tests/python/setacc.py, tests/python/setxor.py, tests/python/simplacc.py, tests/python/simstate.py, tests/python/sonf.py, tests/python/split.py, tests/python/streett_totgba.py, tests/python/streett_totgba2.py, tests/python/stutter.py, tests/python/sum.py, tests/python/synthesis.py, tests/python/toparity.py, tests/python/toweak.py, tests/python/tra2tba.py, tests/python/trival.py, tests/python/twagraph.py, tests/python/zlktree.py: Replace all occurrences of "assert" by calls to unittest.TestCase methods.
This commit is contained in:
parent
7b7e1b254b
commit
530cf7ca47
69 changed files with 1314 additions and 1116 deletions
44
HACKING
44
HACKING
|
|
@ -290,8 +290,8 @@ would understand with:
|
|||
make check LOG_DRIVER=$PWD/tools/test-driver-teamcity
|
||||
|
||||
|
||||
Coding conventions
|
||||
==================
|
||||
C++ Coding conventions
|
||||
======================
|
||||
|
||||
Here some of the conventions we follow in Spot, so that the code looks
|
||||
homogeneous. Please follow these strictly. Since this is free
|
||||
|
|
@ -682,3 +682,43 @@ Other style recommandations
|
|||
|
||||
* Always code as if the person who ends up maintaining your code is
|
||||
a violent psychopath who knows where you live.
|
||||
|
||||
|
||||
Coding conventions for Python Tests
|
||||
===================================
|
||||
|
||||
Unless you have some specific reason to write test cases in C++ (for
|
||||
instance do test some specific C++ constructions, or to use valgrind),
|
||||
prefer writing test cases in Python. Writing test cases in C++
|
||||
requires some compilation, which slows down the test suite. Doing the
|
||||
same test in Python is therefore faster, and it has the added benefit
|
||||
of ensuring that the Python bindings works.
|
||||
|
||||
We have two types of Python tests: Python scripts or jupyter
|
||||
notebooks. Jupyter notebooks are usually used for a sequence of
|
||||
examples and comments that can also serve as part of the
|
||||
documentation. Such jupyter notebooks should be added to the list of
|
||||
code examples in doc/org/tut.org. Testing a notebook is done by the
|
||||
tests/python/ipnbdoctest.py scripts, which evaluate each cells, and
|
||||
checks that the obtainted result is equivalent to the result saved in
|
||||
the notebook. The process is a bit slow, so plain Python scripts
|
||||
should be prefered for most tests.
|
||||
|
||||
If you do need a notebook to tests Jupyter-specific code but this
|
||||
notebook should not be shown in the documentation, use a filename
|
||||
starting with '_'.
|
||||
|
||||
Tests written as Python scripts should follow the same convention as
|
||||
shell scripts: exit 0 for PASS, exit 77 for SKIP, and any other exit
|
||||
code for FAIL.
|
||||
|
||||
Do not use assert() in those scripts, as (1) asserts can be disabled,
|
||||
and (2) they provide poor insights in case of failures. Instead do
|
||||
|
||||
from unittest import TestCase
|
||||
tc = TestCase()
|
||||
|
||||
and then use tc.assertTrue(...), tc.assertEqual(..., ...),
|
||||
tc.assertIn(..., ...), etc. In case of failures, those will print
|
||||
useful messages in the trace of the tests. For instance multiline
|
||||
strings that should have been equal will be presented with a diff.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue