[cubicweb-ctl] respect sys.exit status code when aborting a command
When exploring the stack of all calls to a cubicweb-ctl command, it has been
discovered than on a KeyboardInterrupt and on a SystemExit exception the base
class InstanceCommand (for commands that works on one instance) will always set
the return code of cubicweb-ctl to 8: this mean that if another command do a
`sys.exit(some_code)` the exit code will be ignored and overwritten by '8'.
This behavior is not intuitive, apparently not documented and doesn't seems to
have any justification. It also prevent commands from exciting with different
return codes which could be a desired behavior in the situation of scripting.
3.27 (not yet released)
=======================
New features
------------
* Tests can now be run concurrently across multiple processes. You can use
`pytest-xdist`_ for that. For tests using `PostgresApptestConfiguration` you
should be aware that `startpgcluster()` can't run concurrently. Workaround is
to call pytest with ``--dist=loadfile`` to use a single test process per test
module or use an existing database cluster and set ``db-host`` and
``db-port`` of ``devtools.DEFAULT_PSQL_SOURCES['system']`` accordingly.
.. _pytest-xdist: https://github.com/pytest-dev/pytest-xdist
* on `cubicweb-ctl create` and `cubicweb-ctl pyramid`, if it doesn't already
exist in the instance directory, the `pyramid.ini` file will be generated
with the needed secrets.
* add a --pdb flag to all cubicweb-ctl command to launch (i)pdb if an exception
occurs during a command execution.
Backwards incompatible changes
------------------------------
* Standardization on the way to launch a cubicweb instance, from now on the
only way to do that will be the used the ``pyramid`` command. Therefore:
* ``cubicweb-ctl`` commands "start", "stop", "restart", "reload" and "status"
have been removed because they relied on the Twisted web server backend that
is no longer maintained nor working with Python 3.
* Twisted web server support has been removed.
* ``cubicweb-ctl wsgi`` has also been removed.
* Support for legacy cubes (in the 'cubes' python namespace) has been dropped.
Use of environment variables CW_CUBES_PATH and CUBES_DIR is removed.
* Python 2 support has been dropped.
* Exceptions in notification hooks aren't catched-all anymore during tests so
one can expect tests that seem to pass (but were actually silently failing)
to fail now.
* All "cubicweb-ctl" command only accept one instance argument from now one
(instead of 0 to n)
Deprecated code drops
---------------------
Most code deprecated until version 3.25 has been dropped.