While looking at that I noticed two additional issues:
- In remote mode, the connection string to the promoted standby was incorrect when running pg_rewind, leading to connection errors
- At least in my environment, a sleep of 1 after the standby promotion was not sufficient to make the tests work.
While working on another patch for TAP tests, I noticed that relying on environment variables to run tests is a bad idea as well, as other tests do not do it, so instead is a patch that refactors the tests so as they do not use environment variables and so as it is not necessary to pass arguments to prove.
The trick is to use sub-routines in each test, and invoke this subroutine for both 'local' and 'remote'. This changes the order the tests are run, but I guess that's not a big deal as long as the tests are run, and this approach looks more solid to me as it makes pg_rewind's tests more consistent with the rest. The log files of each test are still separated the same way as before.