D6200: perf: make perf.run-limits code work with Python 3
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Fri Apr 5 01:22:22 UTC 2019
indygreg created this revision.
Herald added subscribers: mercurial-devel, mjpieters.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
We need b'' because perf.py isn't run through the source
transformer.
We need to cast the exception to bytes using pycompat.bytestr()
because ValueError can't be %s formatted due to built-in exceptions
lacking __bytes__.
We need to pycompat.sysstr() before the float() and int() cast
so the ValueError message doesn't have b'' in it.
Even with that, it looks like the error message for the ValueError
for float casts added quotes, so we need to account for that in test
output.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6200
AFFECTED FILES
contrib/perf.py
tests/test-contrib-perf.t
CHANGE DETAILS
diff --git a/tests/test-contrib-perf.t b/tests/test-contrib-perf.t
--- a/tests/test-contrib-perf.t
+++ b/tests/test-contrib-perf.t
@@ -260,7 +260,8 @@
malformatted run limit entry, missing "-": 500
! wall * comb * user * sys * (best of 5) (glob)
$ hg perfparents --config perf.stub=no --config perf.run-limits='aaa-12, 0.000000001-5'
- malformatted run limit entry, could not convert string to float: aaa: aaa-12
+ malformatted run limit entry, could not convert string to float: aaa: aaa-12 (no-py3 !)
+ malformatted run limit entry, could not convert string to float: 'aaa': aaa-12 (py3 !)
! wall * comb * user * sys * (best of 5) (glob)
$ hg perfparents --config perf.stub=no --config perf.run-limits='12-aaaaaa, 0.000000001-5'
malformatted run limit entry, invalid literal for int() with base 10: 'aaaaaa': 12-aaaaaa
diff --git a/contrib/perf.py b/contrib/perf.py
--- a/contrib/perf.py
+++ b/contrib/perf.py
@@ -316,22 +316,22 @@
limitspec = ui.configlist(b"perf", b"run-limits", [])
limits = []
for item in limitspec:
- parts = item.split('-', 1)
+ parts = item.split(b'-', 1)
if len(parts) < 2:
- ui.warn(('malformatted run limit entry, missing "-": %s\n'
+ ui.warn((b'malformatted run limit entry, missing "-": %s\n'
% item))
continue
try:
- time_limit = float(parts[0])
+ time_limit = float(pycompat.sysstr(parts[0]))
except ValueError as e:
- ui.warn(('malformatted run limit entry, %s: %s\n'
- % (e, item)))
+ ui.warn((b'malformatted run limit entry, %s: %s\n'
+ % (pycompat.bytestr(e), item)))
continue
try:
- run_limit = int(parts[1])
+ run_limit = int(pycompat.sysstr(parts[1]))
except ValueError as e:
- ui.warn(('malformatted run limit entry, %s: %s\n'
- % (e, item)))
+ ui.warn((b'malformatted run limit entry, %s: %s\n'
+ % (pycompat.bytestr(e), item)))
continue
limits.append((time_limit, run_limit))
if not limits:
To: indygreg, #hg-reviewers
Cc: mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list