Make test database template creation concurrent
build_db_cache() is used in tests to create test database templates, i.e.
DEFAULT_EMPTY_DB_ID (which is __default_empty_db__) and custom template
database using CubicwebTC test_db_id/pre_setup_database API.
When running tests in parallel using multiple processes, build_db_cache() may
try to build the same database twice. Avoid this by adding synchronisation of
process by using a file lock.
So when two processes require the same template database, one build the
database and others wait it to be created.
Use filelock (https://github.com/benediktschmitt/py-filelock) library to have a
portable (unix / windows) way for handling locks.
Also filelock is packaged in debian: https://packages.debian.org/source/python-filelock
====
Book
====
----
Part
----
Chapter
=======
.. _Level1AnchorForLaterReference:
Level 1 section
---------------
Level 2 section
~~~~~~~~~~~~~~~
Level 3 section
```````````````
*CubicWeb*
inline directives:
:file:`directory/file`
:envvar:`AN_ENV_VARIABLE`
:command:`command --option arguments`
:ref:, :mod:
.. sourcecode:: python
class SomePythonCode:
...
.. XXX a comment, wont be rendered
a [foot note]_
.. [foot note] the foot note content
Boxes
=====
- warning box:
.. warning::
Warning content
- note box:
.. note::
Note content
Cross references
================
To arbitrary section
--------------------
:ref:`identifier` ou :ref:`label <identifier>`
Label required of referencing node which as no title, else the node's title will be used.
To API objects
--------------
See the autodoc sphinx extension documentation. Quick overview:
* ref to a class: :class:`cubicweb.devtools.testlib.AutomaticWebTest`
* if you can to see only the class name in the generated documentation, add a ~:
:class:`~cubicweb.devtools.testlib.AutomaticWebTest`
* you can also use :mod: (module), :exc: (exception), :func: (function), :meth: (method)...
* syntax explained above to specify label explicitly may also be used