Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27539
test-bundle2-format: force gc so a GeneratorExit will be thrown
PyPy has looser semantics than CPython for when a generator's close
method will be called. Forcing the gc causes it to be called at
the right moment.
Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27538
test-bad-extension: account for PyPy/CPython error difference
Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27537
demandimport: update obsolete comment
Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27536
demandimport: add support for PyPy
PyPy's implementation of __import__ differs subtly from that of CPython.
If invoked without a name or fromlist, it throws an ImportError,
whereas CPython returns a reference to the level-appropriate importing
package.
Here, we achieve the same behaviour by hand.
Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27535
test-demandimport: ensure that relative imports are deferred
This adds a test not just at our local "top level" (the mercurial
package), but also one level deeper (mercurial.hgweb).
Bryan O'Sullivan <bos@serpentine.com> [Wed, 23 Dec 2015 16:22:20 -0800] rev 27534
histedit: don't bother with cPickle, demand-load pickle
We're unlikely to ever need the pickle module, so there's no good
reason to force loading of its faster cousin.
Matt Mackall <mpm@selenic.com> [Mon, 28 Dec 2015 10:11:48 -0600] rev 27533
merge with stable
Sean Farley <sean@farley.io> [Wed, 16 Dec 2015 10:39:00 -0800] rev 27532
crecord: stop raising error.Abort if curses is not found (issue5008)
On some servers, python curses support is disabled. This patch not only fixes
that but provides a fallback on other machines (e.g. Windows) when curses is
not found.
The previous code was actually flawed logic and relied on wcurses throwing an
ImportError which demandimport wouldn't throw. So, this patch also fixes that
problem.
Sean Farley <sean@farley.io> [Tue, 15 Dec 2015 16:01:45 -0800] rev 27531
cmdutil: use crecordmod.checkcurses
Instead of blindly trusting the user's experimental.crecord, we use checkcurses
to abstract that logic so that we can handle the case where python was not
built with curses.
Sean Farley <sean@farley.io> [Tue, 15 Dec 2015 16:00:06 -0800] rev 27530
crecord: ensure that curses is False if not imported
This provides no functional change but makes the next two patches easier to
review.
Sean Farley <sean@farley.io> [Tue, 15 Dec 2015 15:56:10 -0800] rev 27529
crecord: add helper function to determine if we should use curses
To fix issue5008 properly, we need a helper function to determine if curses is
imported and also if the user has enabled the experimental flag.
Sean Farley <sean@farley.io> [Wed, 16 Dec 2015 10:33:19 -0800] rev 27528
crecord: use try/except for import of curses
Not only does this improve fragility with 'if os.name == ...' it will help
future patches enable the behavior to fallback to use plain record when curses
is unavailable (e.g. python compiled without curses support).
Bryan O'Sullivan <bos@serpentine.com> [Sun, 27 Dec 2015 23:55:54 +0900] rev 27527
histedit: only use pickle if not using the modern save format
This avoids a case where PyPy's cPickle module throws a more confusing
error than CPython's.
Bryan O'Sullivan <bos@serpentine.com> [Sun, 27 Dec 2015 23:55:54 +0900] rev 27526
perf: close transaction in perffncachewrite
This fixes a bug, and brings CPython behaviour on this test into
line with PyPy.
Bryan O'Sullivan <bos@serpentine.com> [Sun, 27 Dec 2015 23:55:54 +0900] rev 27525
hbisect: use tryreadlines to load state
This closes the file handle after reading, which stops PyPy from
leaking open file handles and thus failing test-bisect3.t.
Bryan O'Sullivan <bos@serpentine.com> [Sun, 27 Dec 2015 23:55:54 +0900] rev 27524
eol: make output stable
This eliminates a divergence in behaviour between PyPy and Python.
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Dec 2015 12:32:08 -0800] rev 27523
exchange: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Dec 2015 12:30:14 -0800] rev 27522
localrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Dec 2015 21:52:58 -0800] rev 27521
httpconnection: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Dec 2015 12:27:24 -0800] rev 27520
import-checker: force 'logging' to stdlib module
Not sure why this isn't getting picked up. Perhaps we're not handling
stdlib paths that have sub-modules? Something to investigate for another
day...
Yuya Nishihara <yuya@tcha.org> [Wed, 23 Dec 2015 22:48:48 +0900] rev 27519
test-install: embed wix namespace for Python 2.6 compatibility
According to doc, the syntax is "{uri}tag".
https://docs.python.org/2.7/library/xml.etree.elementtree.html#parsing-xml-with-namespaces
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 17:54:13 +0000] rev 27518
fileset: add hint for list error to use or
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 17:54:03 +0000] rev 27517
revset: add hint for list error to use or
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 17:39:32 +0000] rev 27516
error: make ParseError inherit from HintException
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 17:38:24 +0000] rev 27515
error: refactor OutOfBandError to inherit from HintException
timeless <timeless@mozdev.org> [Tue, 22 Dec 2015 20:10:22 +0000] rev 27514
phases: mention how to make secret commits in help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 23 Dec 2015 22:28:52 +0900] rev 27513
mq: use fallback patch name if no alpha-numeric in summary line (issue5025)
Before this patch, "hg qimport -r REV" fails, if the summary line of
description of REV doesn't contain any alpha-numeric bytes.
In this case, all bytes in the summary line 'title' are dropped from
'namebase' by the code path below.
namebase = re.sub('[\s\W_]+', '_', title.lower()).strip('_')
'makepatchname()' immediately returns this empty string as valid patch
name, because patch name conflicting against empty string never
exists.
Then, "hg qimport -r REV" is aborted at creation of patch file with
empty filename.
This situation isn't so rare. For example, ordinary texts in Japanese
often consist of non alpha-numeric bytes in UTF-8.
This patch makes 'makepatchname()' use fallback patch name if the
summary line of imported revision doesn't contain any alpha-numeric
bytes.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 22 Dec 2015 21:38:06 -0800] rev 27512
osutil: c_ssize_t is only available in Python >= 2.7
Bryan O'Sullivan <bos@serpentine.com> [Tue, 22 Dec 2015 21:38:06 -0800] rev 27511
check-seclevel: pass a ui to the extension loader
Without this, if an import error occurs (as with pypy), the attempt to
report it fails since ui is None.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 22 Dec 2015 21:38:05 -0800] rev 27510
check-seclevel: add a --debug option
This will make it possible to get semi-meaningful tracebacks if an import
error occurs.
Why care? Trying to run this script under pypy currently fails, but the
true error is obscured.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 23 Nov 2015 12:14:01 -0500] rev 27509
test-run-tests: glob away a --debug run difference on Windows
This internal test is piped through 'grep -v pwd' to eliminate the pwd alias set
when running with MSYS. Unfortunately, the '.' from the successful run of the
prior internal test precedes the pwd alias for the next test on the same line,
so grep filters out '.' too, except for the final test.
It also looks like there may be a bug with --debug: the output of the internal
test that had this diff says 2 ran, 0 failed (one test being test-failure.t),
but if --debug is omitted from the internal test, then it says 2 ran, 1 failed.
With this longstanding issue fixed, the test suite finally runs cleanly on
Windows (except subrepo merge documented in issue 4988), with 88 skips. \o/
Matt Harbison <matt_harbison@yahoo.com> [Tue, 22 Dec 2015 21:47:40 -0500] rev 27508
import-checker: force 'ctype.util' to stdlib module
Not having this caused warnings on Windows:
mercurial/pure/osutil.py:12: stdlib import follows local import: os
mercurial/pure/osutil.py:13: stdlib import follows local import: socket
mercurial/pure/osutil.py:14: stdlib import follows local import: stat
mercurial/pure/osutil.py:15: stdlib import follows local import: sys