Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 07:55:34 -0400] rev 40249
tests: accept slightly different zip file in Python 3
I added some `unzip -t` here and I *think* the only change is from
Python 3 having more data in the zip file headers or something. Sigh.
Differential Revision: https://phab.mercurial-scm.org/D5075
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 07:53:51 -0400] rev 40248
webcommands: use stringutil.pprint() to repr invalid archive types
Differential Revision: https://phab.mercurial-scm.org/D5074
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 07:51:22 -0400] rev 40247
archival: don't try and fsdecode non-{bytes,str} objects
This function accepts both bytes and file-like objects.
Differential Revision: https://phab.mercurial-scm.org/D5073
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 06:34:53 -0400] rev 40246
tests: fix last failure in test-tools.t
Differential Revision: https://phab.mercurial-scm.org/D5072
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 13 Oct 2018 12:20:24 +0200] rev 40245
run-tests: run tests with as many processes as cores by default
This seems like a useful default behavior so tests run faster by default*
* Except in special circumstances where the OS/filesystem doesn't scale well
to many CPU cores (like APFS *cough* *cough*).
Differential Revision: https://phab.mercurial-scm.org/D5071
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 13 Oct 2018 12:11:45 +0200] rev 40244
run-tests: print number of tests and parallel process count
This seems like a useful output message to have.
I also sneak in a change to lower the parallel process count if it
is larger than the number of tests, as that makes no sense and output
saying we're running more tests in parallel than there exists tests would
be wonky.
Differential Revision: https://phab.mercurial-scm.org/D5070
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Oct 2018 12:29:43 +0200] rev 40243
releasenotes: use stringutil.wrap() instead of handcrafted TextWrapper wrapper
It's silly to splitlines() a joined string, but we don't care the performance
here.
Martin von Zweigbergk <martinvonz@google.com> [Sat, 13 Oct 2018 00:22:05 -0700] rev 40242
match: optimize matcher when all patterns are of rootfilesin kind
Internally at Google, we use narrowspecs with only rootfilesin-kind
patterns. Sometimes there are thousands of such patterns
(i.e. thousands of tracked directories). In such cases, it can take
quite long to build and evaluate the resulting matcher.
This patch optimizes matchers that have only patterns of rootfilesin
so it instead of creating a regular expression, it matches the given
file's directory against the set of directories.
In a repo with ~3600 tracked directories, it takes about 1.35 s to
build the matcher and 2.7 s to walk the dirstate before this
patch. After, it takes 0.04 s to create the matcher and 0.87 s to walk
the dirstate.
It may be worthwhile to do similar optimizations for e.g. patterns of
type "kind:", but that's not a priority for us right now.
Differential Revision: https://phab.mercurial-scm.org/D5058
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 06:02:27 -0400] rev 40241
churn: use integer division consistently
This results in slight output changes, but it's at least consistent
between Python 2 and 3. Since the output is just bar graphs anyway,
I'm content with the changes.
Differential Revision: https://phab.mercurial-scm.org/D5063
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 05:58:16 -0400] rev 40240
churn: fix stack traces on Python 3
Differential Revision: https://phab.mercurial-scm.org/D5062
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 04:00:57 -0400] rev 40239
py3: moar passing tests
Differential Revision: https://phab.mercurial-scm.org/D5055
Augie Fackler <augie@google.com> [Fri, 12 Oct 2018 12:52:49 -0400] rev 40238
py3: one new passing tests
Differential Revision: https://phab.mercurial-scm.org/D5006
Augie Fackler <augie@google.com> [Fri, 12 Oct 2018 12:38:37 -0400] rev 40237
tests: expand our coverage of errors in Python 3 for bad extensions
What a mess.
Differential Revision: https://phab.mercurial-scm.org/D5005
Augie Fackler <augie@google.com> [Fri, 12 Oct 2018 12:32:12 -0400] rev 40236
tests: add lots of globs and conditional output lines
The test now passes on Python 3. I'm going to do one follow-up where
I'll adjust some grep calls to improve our checking of things on
Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5004
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 04:00:47 -0400] rev 40235
releasenotes: fix remaining bytes/unicode issues caught by tests
All tests now pass.
Differential Revision: https://phab.mercurial-scm.org/D5054
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 03:27:21 -0400] rev 40234
relnotes: port to Python 3
The big annoyance here was having to feed textwrap unicodes instead of
bytes, but it all seems to work.
Differential Revision: https://phab.mercurial-scm.org/D5053
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Oct 2018 11:01:38 +0200] rev 40233
py3: use __code__ instead of func_code to test if func is cachable
Surprisingly, this fixes test-cache-abuse.t, which would generate a different
revbranch cache if filtered set had no cache.
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Oct 2018 10:58:06 +0200] rev 40232
py3: pass in system string to vars(branchmap).__contains__()
Mark Thomas <mbthomas@fb.com> [Sat, 13 Oct 2018 08:48:59 +0000] rev 40231
test-bookmarks-pushpull: use correct tmp dir for no-bm-move.sh
test-bookmarks-pushpull.t writes a temporary file in $TESTDIR instead of
$TESTTMP. Make it use $TESTTMP instead.
Differential Revision: https://phab.mercurial-scm.org/D5057
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 05:17:28 +0300] rev 40230
py3: add some glob to make output compatible with python 3
This makes test-pathconflicts-basic.t and test-origbackup-conflict.t passing
on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5042
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 05:14:23 +0300] rev 40229
py3: add a b'' prefix in tests/test-requires.t
This makes the test pass on Python 3.
# skip-blame because just b'' prefix.
Differential Revision: https://phab.mercurial-scm.org/D5041
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 05:12:20 +0300] rev 40228
py3: use '%d' for rev nums instead of '%s'
This makes test-close-head.t pass on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5040
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 05:03:24 +0300] rev 40227
py3: more globing of things to make output compatible between py2 and py3
This also makes the test-ssh-repoerror.t pass on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5038
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:54:35 +0300] rev 40226
py3: use stringutil.pprint() instead of '%r'
This makes test-pager-legacy.t pass on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5037
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:51:09 +0300] rev 40225
py3: use '%d' for integers instead of '%s'
Differential Revision: https://phab.mercurial-scm.org/D5036
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:47:51 +0300] rev 40224
py3: add some py3 specific output to test
This makes the test work on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5035
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:42:14 +0300] rev 40223
py3: use stringutil.pprint() in color.py instead of '%r'
This fixes the test-status-color.t on python 3.
Differential Revision: https://phab.mercurial-scm.org/D5034
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:36:04 +0300] rev 40222
py3: add b'' prefixes in tests/test-progress.t
This makes the test pass on Python 3.
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5033
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:29:03 +0300] rev 40221
py3: add b'' prefixes to tests/test-keyword.t
This test is now pretty close to passing on Python 3.
# skip-blame because just b'' prefixes.
Differential Revision: https://phab.mercurial-scm.org/D5032
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:24:19 +0300] rev 40220
py3: use stringutil.pprint() if we are printing bool values
Differential Revision: https://phab.mercurial-scm.org/D5031
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:21:02 +0300] rev 40219
py3: glob some difference between py2 and py3 output
On py2, the directory names are under quotes and on py3 they are not and I don't
know why.
Differential Revision: https://phab.mercurial-scm.org/D5030
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:09:34 +0300] rev 40218
py3: byteify tests/wireprotosimplecache.py
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5029
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 04:08:53 +0300] rev 40217
py3: add b'' prefixes in tests/test-help.t
This takes us close to make the test passing.
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5028
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 03:59:15 +0300] rev 40216
py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Just following 6c0b1d964537ab62d76c208f5f04ab414814c94e here.
Differential Revision: https://phab.mercurial-scm.org/D5027
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 03:58:20 +0300] rev 40215
py3: use '%s' instead of %r in hgext/convert/subversion.py
Using '%r' on bytes in python 3 adds b'' prefixes to output which is bad. I
don't see a reason why we want to repr() the string here, so just switched to
'%s'. This fixes some output failure in one of the subversion test.
Differential Revision: https://phab.mercurial-scm.org/D5026
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 03:46:57 +0300] rev 40214
py3: make test-contrib-perf.t work on python 3
Differential Revision: https://phab.mercurial-scm.org/D5025
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 03:32:12 +0300] rev 40213
py3: add 3 more passing tests to whitelist caught by buildbot
Differential Revision: https://phab.mercurial-scm.org/D5024
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 13 Oct 2018 00:35:37 +0300] rev 40212
py3: add some r'' prefixes in hgext/narrow/narrowwirepeer.py
This fixes test-narrow-widen-no-ellipsis.t on Python 3.
# skip-blame because just r'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D5023
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 12 Oct 2018 19:49:02 +0200] rev 40211
py3: r'' prefix default values for mimetypes.guess_mime()
As suggested by @yuja in D4967.
Differential Revision: https://phab.mercurial-scm.org/D5020
Mark Thomas <mbthomas@fb.com> [Fri, 12 Oct 2018 20:03:29 +0000] rev 40210
absorb: update help text
Update the help text to reflect the recent changes to absorb in D4999.
The `-p` option actually only affects the `-a` option: without `-a`, the
changes are printed; with `-a` the changes are only printed if `-p` is
specified. Reword the help text for `-p` to reflect this.
Differential Revision: https://phab.mercurial-scm.org/D5022
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Oct 2018 16:45:46 +0900] rev 40209
fsmonitor: use vfs instead of opener (issue5938)
"opener" of localrepository object was dropped at Mercurial 4.3 (or
a7e210167c28). "vfs" should be used instead.
wlock is required to write into a file under .hg directory.
For efficiency, we should change _cmpsets() from:
1. acquire wlock
2. open log file under .hg directory with write mode
3. compare between result of watchman and Mercurial's dirstate logic
4. write out error info into a file, if error is detected
5. release wlock
to:
1. compare between result of watchman and Mercurial's dirstate logic
2. acquire wlock, if error is detected
3. open and write error info into a file
4. release wlock
But this is another issue.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Oct 2018 16:07:08 +0900] rev 40208
tests: configure fsmonitor.mode=paranoid always if fsmonitor is used
This forces fsmonitor extension execute "paranoid" code path.
Strict speaking, we should make fsmonitor-run-tests.py accept own
specific options, but there is no code path, which is disabled in
"paranoid" mode, at least now. Therefore, this solution seems
reasonable enough.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2018 13:12:06 +0900] rev 40207
tests: drop files from exclusion list in test-check-module-imports.t
Now, these files has no style issue at checking with import-checker.py.
BTW, tests/test-imports-checker.t is still excluded, because almost
all code fragments in it has intentional importing style violation.
Using NO_CHECK_EOF instead of EOF as heredoc limit mark can make
import-checker.py ignore such fragments. But keeping these fragments
checkable seems still useful: for example, test-imports-checker.t can
be used to test whether import-checker.py can detect erroneous code
fragment in test script as expected.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2018 12:03:04 +0900] rev 40206
tests: use NO_CHECK_EOF for fragments used to test importing via extension
test-extension.t is excluded in test-check-module-imports.t, because
import-checker.py reports that some python code fragments in it does
not import modules in recommended style.
These code fragments are used to test importing modules relatively and
absolutely via extension (e.g. issue4029, issue5208, and so on). Test
specific package hierarchy becomes complicated for this purpose, and
it seems reasonable to avoid checking these code fragments with
import-checker.py.
But on the other hand, other code fragments in test-extension.t should
be checked by import-checker.py.
Therefore, this patch uses NO_CHECK_EOF limit mark only for python
code fragments, which are used to test importing via extension in
test-extension.t. NO_CHECK_EOF limit mark tells import-checker.py that
this code fragment should be ignored, via testparseutil.py.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2018 10:30:59 +0900] rev 40205
tests: use NO_CHECK_EOF for fragments having intentional error
Some test scripts are excluded in test-check-module-imports.t, because
import-checker.py reports that code fragments embedded in these test
scripts have syntax error. But these syntax error is intentional.
This patch uses NO_CHECK_EOF instead of EOF as heredoc limit mark for
such fragments, in order to make import-checker.py ignore
them. NO_CHECK_EOF limit mark tells import-checker.py that this code
fragment should be ignored, via testparseutil.py.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2018 10:45:36 +0900] rev 40204
tests: fix style issue of importing order in test-lock.py
test-lock.py is excluded in test-check-module-imports.t, because
import-checker.py reports that some stdlibs are imported after local
silenttestrunner module.
I can not found out any reason why tests/silenttestrunner.py should be
imported before some stdlibs from the point of functionality view.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2018 10:10:06 +0900] rev 40203
tests: fix style issue of importing hgweb in embedded code fragments
Some test scripts are excluded in test-check-module-imports.t, because
import-checker.py reports that hgweb and/or hgwebdir of
mercurial.hgweb are not imported in recommended style.
To fix this issues, this patch make python code fragments embedded in
these files import hgweb from mercurial package at first, and refer
hgweb and hgwebdir via imported hgweb.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 12 Oct 2018 18:20:17 +0200] rev 40202
py3: encode str to bytes
These fields are str on Python 2 and 3. This module doesn't import any Mercurial
modules. So I just did the str -> bytes inline.
Differential Revision: https://phab.mercurial-scm.org/D5010