runbot/forwardport/tests
Xavier Morel 0a839a4857 [FIX] forwardport: don't break forward porting on huge conflicts
On forward-porting, odoo/odoo#170183 generates a conflict on pretty
much every one of the 1111 files it touches, because they are
modify/delete conflicts that generates a conflict message over 200
bytes per file, which is over 200kB of output.

For this specific scenario, the commit message was being passed
through arguments to the `git` command, resulting in a command line
exceeding `MAX_ARG_STRLEN`[^1]. The obvious way to fix this is to pass
the commit message via stdin as is done literally in the line above
where we just copy a non-generated commit message.

However I don't think hundreds of kbytes worth of stdout[^2] is of any
use, so shorten that a bit, and stderr while at it.

Don't touch the commit message size for now, possibly forever, but
note that some log diving reveals a commit with a legit 18kB message
(odoo/odoo@42a3b704f7) so if we want to
restrict that the limit should be at least 32k, and possibly 64. But
it might be a good idea to make that limit part of the ready / merge
checks too, rather than cut things off or trigger errors during
staging.

Fixes #900

[^1]: Most resources on "Argument list too long" reference `ARG_MAX`,
    but on both my machine and the server it is 2097152 (25% of the
    default stack), which is ~10x larger than the commit message we
    tried to generate. The actual limit is `MAX_ARG_STRLEN` which
    can't be queried directly but is essentially hard-coded to
    PAGE_SIZE * 32 = 128kiB, which tracks.

[^2]: Somewhat unexpectedly, that's where `git-cherry-pick` sends the
    conflict info.
2024-06-25 15:54:23 +02:00
..
conftest.py [IMP] *: store filestore & forwardport checkouts in temp dirs 2022-08-05 15:35:51 +02:00
test_batches.py [REF] forwardport: update re_matches to not use a regex 2024-06-04 14:18:04 +02:00
test_conflicts.py [FIX] forwardport: don't break forward porting on huge conflicts 2024-06-25 15:54:23 +02:00
test_limit.py [ADD] runbot_merge: help command, and help on error 2024-06-24 22:16:43 +02:00
test_overrides.py [CHG] *: move forward-porting over to batches 2024-05-24 09:08:56 +02:00
test_simple.py [IMP] forwardport: don't ping *every* forwardport 2024-06-10 18:47:49 +02:00
test_updates.py [FIX] *: re-enable notification on status failure 2024-06-21 10:27:01 +02:00
test_weird.py [IMP] *: require explicitly specifying whether exceptions in logs are valid 2024-06-12 15:09:42 +02:00