run-tests: make code coverage work on Python 3
This code path was obviously not tested on Python 3 because it
blew up in several places due to str/bytes mismatch.
For internal code, we normalize paths to bytes.
For code calling into `coverage`, we normalize paths to str,
which is what `coverage` seems to expect.
After this, `run-tests.py -H` works on Python 3!
Differential Revision: https://phab.mercurial-scm.org/D7133
$ hg init
$ echo This is file a1 > a
$ hg add a
$ hg commit -m "commit #0"
$ echo This is file b1 > b
$ hg add b
$ hg commit -m "commit #1"
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo This is file c1 > c
$ hg add c
$ hg commit -m "commit #2"
created new head
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ rm b
$ echo This is file c22 > c
Test hg behaves when committing with a missing file added by a merge
$ hg commit -m "commit #3"
abort: cannot commit merge with missing files
[255]