(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.
We no longer have any data files, so this is no longer needed. Augie
Fackler reported on IRC that this "hack" had never worked for him in
the first place.
In 47cfa8aa4b94 we began installing some data files in PREFIX/share.
When preparing to run the tests, run-tests.py uses --home="" in order
to work around home being set in a ~/.pydistutils.cfg file. This
somehow overwrites the --prefix option.
The result was that the share/ directory was installed in the top of
the Mercurial source tree.
Rely on a ConfigParser file, tests/blacklist, to define blacklist targets.
This allows exposing specific test suites for testing incomplete/particular
features, e.g. "run-tests.py --blacklist inotify-failures --inotify *"
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.
Use subprocess to emulate Popen4 if available - similar to how it is done in
util.py.
Using popen2 under python 2.6 gives
DeprecationWarning: The popen2 module is deprecated. Use the subprocess module.
The merge tool selecting algorithm is hardcoded to look for hgmerge in $PATH
before it falls back to use internal merge. This fixes the test for this
fallback to be tolerant to existing hgmerges.
On Mac OS X, several top-level directories are actually symlinks into
/private. When setting up HGTMP, expand the symlinks so that later
comparisons to or substituations with the actual path work as expected.
Some SUSE version don't like --home, they fail with:
"error: must supply either home or prefix/exec-prefix -- not both"
this is due to SUSE shipping a distutils.cfg conflicting with --home.
optparse of python2.3 does not transform default values to the specified
type so e.g. "HGTEST_JOBS=4" (introduced in b8e8d6b0ae08) causes tests
to abort, because options.jobs is set to '4' instead of the number 4.
This fixes passing back fail messages mistaken for skip messages when
running with parallel jobs because run_children() only expects one message per
fail.
Add [merge-tool] hgrc section with:
<tool>.executable = name or path (<tool>)
<tool>.args = args with $local/base/other/output ($local $base $other)
<tool>.priority = priority (default 0)
<tool>.binary = handles binary (False)
<tool>.symlink = handles symlinks (False)
<tool>.checkconflict = check for conflict markers (False)
<tool>.premerge = try internal simplemerge (True if not binary or symlink)
Four built-in tools: internal:{merge,local,other,fail}
Add [merge-patterns] section of the form:
<pattern> = <tool>
Priority of settings is:
HGMERGE
merge-patterns
ui:merge
merge-tools by priority
hgmerge, if it can be found
Changes:
unsuccessful merges leave .orig files
63beab327d26 introduced using ui.username before web.contact, but this was
never documented and might cause commit accidents.
- Drop web.author (deprecated since 2005)
- Try ui.username or $EMAIL as a fallback to display something useful.
- Update docs for the fallbacks.
Part of test-tags was modified just to be sure this works.
The change in test-archive-symlinks is necessary to avoid a "helpful"
warning from GNU tar ("implausibly old time stamp 1970-01-01 00:00:00").
if not verbose:
- print 's' rather than '.'
- pass skipped test reports back to parent for -j
- report which tests were skipped at the end
- print '.' after test completion
Without this an aborted test could produce an empty .err file so the diff
looks like as if all lines of the .out files are just missing for some unknown
reason.
hghave detects system features like symlinks availability at run-time. Tests can be skipped by starting them with:
"$TESTDIR/hghave" symlink || exit 80
The 80 exit status triggers hghave output handling by run-tests.py. Also, tests output can be locally patched on the fly to match reference output.
Previously, if test-foo.out doesn't exist and test-foo outputs
something, the first line of the diff will look like this:
-+changeset: 0:0acdaf898367
(note the leading "-")
Revision f2f17143efd1 disallowed tests that have a '.' in the name, but
that also disallows tests that end in .py and .bat, even though run-tests.py
has some code to special case them.
As e.g. test-http-proxy already takes quite some time (about a minute here)
and tests usually should clean up after themselves, the timeout should only be
hit in case of other problems.
test timeout feature is needed for test with python 2.5 beta. if test
does not complete in time (30 seconds is default), it is killed.
some times daemon process used in test can be alive after the test
is killed by user or by timeout. tests now record daemon pids into
$DAEMON_PIDS and run-tests.py kills all living daemons after every test.
final little change is to add newline to end of pid file printed by
"hg serve", else "cat hg.pid >> $DAEMON_FILES" gives garbage.
this is wanted because some tests run python interpreter directly.
must use same python interpreter in tests as in main harness or problems
will happen because of e.g. different python abi if run-tests.py run
with python 2.5 but system python is 2.4.
fix is to see if system python is used and is named python. if no,
put symlink called python at front of shell search path.