Fix https://github.com/chatmail/core/issues/8195 Supersedes https://github.com/chatmail/core/pull/8217 The most interesting change is in `delete_expired_imap_messages()` because there, messages are marked for deletion on single-device chatmail profiles. The logic in `delete_expired_imap_messages()` was wrong before, and pre-messages were not deleted at all. This is fixed by also querying `pre_rfc724_mid` in addition to `rfc724_mid` from the `msgs` table. In order not to make the SQL statement too complex, I split it into two. WRT tests: - `test_immediate_autodelete()` tests the auto-deletion; `test_imap_autodelete_fully_downloaded_msg()` tests that even for a message that is split into pre- and post-message, both messages are deleted. - A lot of tests test that if bcc_self is on, messages are not auto-deleted. E.g. `test_one_account_send_bcc_setting()` and `test_markseen_message_and_mdn()` relies on the fact that messages stay on the server when bcc_self is on. - Unfortunately, it is not possible to test that messages are only deleted for chatmail servers, because we don't have any tests that use a non-chatmail server.
Continuous Integration Scripts for Delta Chat
Continuous Integration, run through GitHub Actions and an own build machine.
Description of scripts
-
clippy.shrunscargo clippyfor all Rust code in the project. -
deny.shrunscargo denyfor all Rust code in the project. -
codespell.shspellchecks the source code usingcodespelltool. -
../.github/workflowscontains jobs run by GitHub Actions. -
run-python-test.shruns CFFI Python tests. -
run-rpc-test.shruns JSON-RPC Python tests. -
make-python-testenv.shcreates a local python test development environment with CFFI bindings. Reusing the same environment is faster than runningrun-python-test.shwhich always recreates environment from scratch and runs additional lints. -
make-rpc-testenv.shcreates a local python development environment with JSON-RPC bindings, i.e.deltachat-rpc-clientanddeltachat-rpc-server. -
remote_tests_python.shrsyncs to a build machine and runs JSON-RPC Python tests remotely on the build machine. -
remote_tests_rust.shrsyncs to the build machine and runs Rust tests remotely on the build machine. -
run-doxygen.shgenerates C-docs which are then uploaded to https://c.delta.chat/ -
run_all.shbuilds Python wheels -
android-rpc-server.shcompiles binaries ofdeltachat-rpc-serverusing Android NDK.
Triggering runs on the build machine locally (fast!)
There is experimental support for triggering a remote Python or Rust test run from your local checkout/branch. You will need to be authorized to login to the build machine (ask your friendly sysadmin on #deltachat Libera Chat) to type:
scripts/manual_remote_tests.sh rust
scripts/manual_remote_tests.sh python
This will rsync your current checkout to the remote build machine (no need to commit before) and then run either rust or python tests.