Commit Graph

32611 Commits

Author SHA1 Message Date
Pulkit Goyal
fbb85da9c2 py3: alias long to int and xrange to range in test-ancestor.py on Python 3 2017-06-16 01:24:31 +05:30
Pulkit Goyal
fc04ed5c12 py3: add a new bytesurl() to convert a str url into bytes 2017-06-16 00:36:17 +05:30
Pulkit Goyal
6554e26b45 py3: add a new strurl() which will convert a bytes url to str 2017-06-16 00:32:52 +05:30
Matt Harbison
00240434ab killdaemons: fix WaitForSingleObject() error handling logic on Windows
The error return is not 0 for this method, so _check() was doing nothing when an
error occurred.  This forces the error path, much like the check for
OpenProcess().

The only unhandled return is now WAIT_ABANDONED, but I don't see how that could
happen in this case.
2017-06-15 21:59:42 -04:00
Matt Harbison
301395709e killdaemons: explicitly set the ctypes signatures
When I tried importing util.posixfile to work around removing a file opened by
another process on Windows, it brought along the declarations in win32.py, which
broke the error handling[1].  It doesn't seem worth hacking killdaemons[2] just
to isolate these declarations in win32.py, so just declare them here to prevent
any future issues.  (win32.py mentions the declarations are required by pypy.)

[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097905.html
[2] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097907.html
2017-06-06 20:18:06 -04:00
Matt Harbison
72dbdbc1d5 hghave: enable 'serve' on Windows
I've been using a local hghaveaddon.py to enable this for a couple of months
with reasonable success, and 'killdaemons' is already enabled on Windows.
There's one failure[1] in test-http-proxy.t that this adds, which I can't figure
out.

[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
2017-05-07 14:58:40 -04:00
Augie Fackler
6faf0dceff contrib: add a ratchet for tests in Python 3
This gives us an easy way to automatically update passing tests in Python 3.
2017-06-15 11:00:29 -04:00
Augie Fackler
9dcef694f2 contrib: check in a whitelist of passing tests in Python 3 2017-06-15 10:59:48 -04:00
Augie Fackler
b3e56018f0 tests: try and fail more gracefully with broken unicode escapes 2017-06-15 13:13:36 -04:00
Augie Fackler
24e351df96 md5sum: adapt for python 3 support 2017-06-15 12:49:13 -04:00
Gregory Szorc
768455e422 profiling: allow configuring minimum display threshold for hotpath
statprof.display_hotpath() accepts a "limit" function to choose the
minimum threshold for samples to display. The default is 0.05, which
means you don't need individual items contributing less than 5%.

I had a need to adjust this threshold. We already have a config
option for it. So let's reuse it.

check-config.py doesn't like having multiple defaults for the
ui.configwith() calls. The behavior is obviously correct. I'm
not sure if it is worth teaching check-config.py how to ignore
this. So I've just accepted the new output.
2017-06-15 11:10:51 -07:00
Gregory Szorc
a71e4d026c config: document profiling.show{min,max} 2017-06-15 11:04:46 -07:00
Gregory Szorc
31b468ec11 check-config: look for ui.configwith
We previously weren't looking for this config helper. And, surprise,
profiling.py references config options without docs.

If I tried hard enough, I could have combined the regexps using a
positive lookbehind assertion or something. But I didn't want to make
my brain explode.

At some point, we should probably do this linting at the tokenizer or
ast layer. I'm not willing to open that can of worms right now.
2017-06-15 10:58:36 -07:00
Gregory Szorc
ea2746aaed check-config: use named groups in regexp
In preparation for making this regexp a bit more complicated.
2017-06-15 10:38:19 -07:00
Gregory Szorc
6f1aea28c8 check-config: use compiled regexp
And split the regexp across multiple lines to make it easier to read.
2017-06-15 10:36:23 -07:00
Gregory Szorc
6a1e29bbcc tests: add test coverage for check-config
We didn't have explicit test coverage before. I broke check-config.py
as part of writing patches and was lucky I realized it.
2017-06-15 10:46:39 -07:00
Martin von Zweigbergk
76831e82ba exchange: use context manager for bundle1 unbundling
The lazy locking is not used for bundle1, so using a regular context
manager is clearer.
2017-06-15 22:57:20 -07:00
Martin von Zweigbergk
911516dae8 unbundle: use context manager for transaction 2017-06-15 14:47:18 -07:00
Martin von Zweigbergk
c8f8b266e4 clonebundle: use context managers for lock and transaction 2017-06-15 17:00:32 -07:00
Yuya Nishihara
10f4660637 changeset_templater: render template specified by templatespec tuple 2017-04-11 21:38:24 +09:00
Yuya Nishihara
2aef40eb43 formatter: render template specified by templatespec tuple 2017-04-22 19:29:41 +09:00
Yuya Nishihara
4fc90a661f formatter: put topic in templatespec tuple
This will allow us to change the initial template reference depending on how
the template is looked up. For example,

  -Tdefault => (ref='changeset', tmpl=None, mapfile='map-cmdline.default')
  -T'{rev}' => (ref='', tmpl='{rev}', mapfile=None)

A literal template given by -T option will be stored as an unnamed template,
which will free up the template namespace so that we can load named templates
from [templates] section of user config.
2017-04-22 19:07:00 +09:00
Yuya Nishihara
5249aa5b36 cmdutil: pass templatespec tuple directly to changeset_templater (API)
A fewer number of arguments should be better.
2017-04-22 19:02:47 +09:00
Yuya Nishihara
7242ce7327 formatter: wrap (tmpl, mapfile) by named tuple
I'm going to add more options to the templatespec tuple.

cmdutil.logtemplatespec() is just an alias now, but it will be changed to
a factory function later.
2017-04-22 18:48:38 +09:00
Yuya Nishihara
ca018ac743 cmdutil: factor out helper to create changeset_templater with literal template
changeset_templater has lots of arguments, but most callers only need to
specify a literal template 'tmpl'.

"hg debugtemplate" has no diff option, which means 'opts' were effectively {},
so dropped opts.
2017-04-22 18:42:03 +09:00
Matt Harbison
5c7fd6ce49 test-dirstate-race: stabilize for Windows
Without quoting, the output after "custom merge tool" in the next test is an
abort trying to open "C:UsersMattAppData..."
2017-06-14 23:56:58 -04:00
Yuya Nishihara
a0674d4810 formatter: document lookuptemplate() 2017-05-06 16:24:21 +09:00
Yuya Nishihara
c4a72a1290 cmdutil: rename gettemplate() to _lookuplogtemplate()
This function is only useful when processing log options.
2017-04-22 15:30:27 +09:00
Yuya Nishihara
a958cf025b formatter: inline gettemplater()
Since it's highly use-case dependent how template should be looked up,
gettemplater() function isn't useful. Keeping it would introduce another
bug I've made and fixed earlier in this series.
2017-04-22 15:11:53 +09:00
Yuya Nishihara
cb89cb49a0 formatter: factor out function to create templater from literal or map file
(tmpl, mapfile) will be packed into a named tuple later.
2017-04-22 15:06:06 +09:00
Yuya Nishihara
8712d0ee3b graphlog: do not look up graphnodetemplate in template paths (BC)
ui.graphnodetemplate config should be a literal template as ui.logtemplate is.
The use of formatter.gettemplater() is valid only for a template string
given by -T/--template option.
2017-04-22 14:53:05 +09:00
Yuya Nishihara
849d320dfa formatter: open raw template file in posix semantics
This should have no effect, but seems good for code consistency.
2017-05-06 14:48:47 +09:00
Yuya Nishihara
fbd006547a formatter: open raw template file in binary mode (BC)
I believe it was a mistake to open file in text mode. Now '\r' is preserved
on Windows, but it should be okay to print '\r\n' as long as users live in
such platform.
2017-05-06 14:47:31 +09:00
Yuya Nishihara
3853d4b59a formatter: close raw template file explicitly 2017-05-06 14:40:22 +09:00
Augie Fackler
e6a918f63a patchbomb: make getaddrs function easier to work with
Prior to this the return value was potentially None, a string, or a
list of strings. It now always returns a list of strings where each
string is always only one email address
2017-06-13 17:43:33 -04:00
Augie Fackler
1250a2693f patchbomb: look for non-empty publicurl, not a non-None one
Otherwise it's impossible to turn this feature back off, which is
making writing of tests awkward.
2017-06-13 16:30:50 -04:00
Augie Fackler
88445b135f patchbomb: make variable name for publicurl always be publicurl 2017-06-13 16:30:11 -04:00
Brandon McCaig
35911e9407 bisect: simpler approach for option validation message
Yuya Nishihara gave this suggestion on the mailing list after the
previous patch was queued, and honestly this seems much simpler and
looks more efficient.
2017-06-14 01:43:47 -04:00
Martin von Zweigbergk
46713842b3 pushkey: use False/True for return values from push functions
It was particularly unclear in phases.pushphase() whether the 0/1
returned were the 0/1 for public/draft phase or for False/True
2017-06-12 16:35:57 -07:00
Yuya Nishihara
5db97a9276 smartset: micro optimize spanset.slice() to narrow range accordingly
-1ms isn't significant, but seems not bad.

  revset #0: limit(0:9999, 100, 9000)
  6) 0.001145
  7) 0.000214
  revset #3: last(0:9999, 100)
  6) 0.000197
  7) 0.000171
2015-04-10 00:14:16 +09:00
Yuya Nishihara
bd5f2e1677 smartset: micro optimize baseset.slice() to use slice of list
-1ms isn't significant, but seems not bad.

  revset #1: limit(0::9999, 100, 9000)
  5) 0.001681
  6) 0.000790
2015-04-09 23:56:06 +09:00
Yuya Nishihara
8dc3831c0a smartset: extract method to slice abstractsmartset
Sub classes can provide optimized implementations.
2015-03-24 00:14:53 +09:00
Yuya Nishihara
94f3c93476 smartset: extract spanset factory to make it constructed without a repo
This renames the spanset class to _spanset, and moves its __init__ to new
spanset() function. spanset() is now a factory function.

This allows us to construct a spanset without keeping a repo instance.
2015-05-24 11:07:14 +09:00
Yuya Nishihara
00575a85de smartset: change repr of spanset to show revisions as half-open range
Before, an empty spanset was displayed as '<spanset+ 0:-1>', which seemed
confusing.
2017-06-11 00:21:38 +09:00
Siddharth Agarwal
d3ed1149d0 fsmonitor: don't write out state if identity has changed (issue5581)
Inspired by the dirstate fix in 39954a8760cd, this should fix any race
conditions with the fsmonitor state changing from underneath.

Since we now grab the wlock for any non-invalidate writes, the only situation
this appears to happen in is with a concurrent invalidation. Test that.
2017-06-12 15:34:31 -07:00
Siddharth Agarwal
0015087fea fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
This means that the state will not be written if:

(1) either the wlock can't be obtained
(2) something else came along and changed the dirstate while we were in the
middle of a status run.
2017-06-12 15:34:31 -07:00
Siddharth Agarwal
f23bf55820 workingctx: add a way for extensions to run code at status fixup time
Some extensions like fsmonitor need to run code after dirstate.status is
called, but while the wlock is held. The extensions could grab the wlock again,
but that has its own peculiar race issues. For example, fsmonitor would not
like its state to be written out if the dirstate has changed underneath (see
issue5581 for what can go wrong in that sort of case).

To protect against these sorts of issues, allow extensions to declare that they
would like to run some code to run at fixup time.

fsmonitor will switch to using this in the next patch in the series.
2017-06-12 13:56:50 -07:00
Siddharth Agarwal
a6ba4f248d workingctx: also pass status tuple into poststatusfixup
fsmonitor is going to need this to compute its set of notable files to persist.
2017-06-12 13:56:43 -07:00
Siddharth Agarwal
05506e53ba workingctx: factor out post-status dirstate fixup
We want to allow extensions to be able to add code to run inside the wlock.
2017-06-12 13:54:59 -07:00
Augie Fackler
f42196a5a4 merge with stable 2017-06-13 10:02:34 -04:00