The options parsing logic replaces the options.blacklist initial value,
a list of filenames, with a dict of test names to filenames. When
runchildren rebuilds the command line to launch child processes the dict
is flattened and provided as a malformed argument when a filename is
expected.
Fix is to remove the blacklist option from child invocations since the
filtering is handled in the parent anyway.
Following discussions with Gilles Morris [1], it seems that it is preferable to
use several blacklist files in a blacklists/ directory. It is easier to add an
unversioned file for experiments than modifying a tracked file.
Also fall back to a simpler syntax, giving up ConfigParser, now that section
names are not needed anymore.
And allow --blacklist parameter to be a complete path, instead of only one
of the filenames contained in tests/blacklists/
[1] http://www.selenic.com/pipermail/mercurial-devel/2009-December/017317.html
Fixes bug introduced by 40ac669fd6c2 (issue1911: --tmpdir plus parallel
mode = fail), and also fixes the long-standing quirk that parallel mode
created multiple /tmp/hgtests.XXXXXX directories. Now there is only one
/tmp/hgtests.XXXXXX, with child0, child1, etc. under it.
In debug mode, we:
- don't try to diff expected vs actual output
- disallow --interactive
- disable timeouts (warn if user tried to supply one)
- don't try to parse hghave output, since we don't have the output
- don't try to save output to .err file
- instead of creating HGTMP inside tmpdir, now HGTMP is tmpdir
(thus, fail if tmpdir already exists)
- passing --tmpdir automatically turns on --keep-tmpdir
argument is a space-separated list of keywords that are searched for
in the name and body of each test. This makes it easy to run only
tests related to tags, hgweb, revert, etc. (eg -k "tag hgweb revert").
(Needed at least for Subversion bindings on OS X, which are in
/opt/subversion. Useful for other external libraries installed in
non-standard places too.)
- in parseargs(), check that --with-hg value is valid
- add handy --local option for "--with-hg=../hg"
- ensure that we always set PATH and PYTHONPATH (not just
when doing a temporary install)
- override any existing PYTHONPATH, so test success does not
depend on whatever happens to be in the caller's environment
- give tests a little more control by exporting $PYTHON to the
environment; needed by test-convert and test-mergetool when
they run hg with a stripped-down $PATH
Also, add a big comment explaining all the corner cases to test for the
next person who tries to modify this script.
- rename _hgpath() to _gethgpath() and move it down next to _checkhglib()
- change _gethgpath() so it caches its result: replaces global 'hgpkg'
that anyone can use with global '_hgpath' that is only for _gethgpath()
- no need to pass 'expecthg' to runchildren() or runtests() anymore
Also: do not change global PYTHON when doing coverage; this seems to
be unnecessary, since we create a dummy 'hg' script that handles
coverage for us, and it made things brittle. (E.g. the rest of this
patch makes the call to _hgpath() come later, and it was broken by
enabling coverage.)
(Extremely handy when you break parallel operation and need to figure
out what's going on. The assumption is that if you run with -v, you
want more details.)
I think this is very convenient when investigating and fixing test failures,
but perhaps it must be tweaked further to show paths if and only if
it is appropriate.