The functional test feature_taproot.py fails in some rare cases on the execution of the following "branched_codesep" spending script (can be reproduced via $ ./test/functional/feature_taproot.py --randomseed 9048710178866422833 on master / 137a98c5a22e058ed7a7997a0a4dbd75301de51e):
The problem occurs if the first data-push (having random content with a random length in the range [0, 510]) has a length of 1 and the single byte has value of [1...16] or [-1]; in this case, the data-push is not minimally encoded by test framework's CScript class (i.e. doesn't use the special op-codes OP_1...OP_16 or OP_1NEGATE) and the script interpreter throws an SCRIPT_ERR_MINIMALDATA error:
test_framework.authproxy.JSONRPCException: non-mandatory-script-verify-flag (Data push larger than necessary) (-26)
Background: the functional test framework's CScript class translates passed bytes/bytearrays always to data pushes using OP_PUSHx/OP_PUSHDATA{1,2,4} op-codes (see CScript.__coerce_instance(...)). E.g. the expression CScript(bytes([1])) yields bytes([OP_PUSH1, 1]) instead of the minimal-encoded bytes([OP_1]).
Fix this by adapting the random-size range to [2,...], i.e. never pass byte-arrays below length two to be pushed.
Closes #27595.