changeset 25472:4d2b9b304ad0

tests: drop explicit $TESTDIR from executables $TESTDIR is added to the path, so this is superfluous. Also, inconsistent use of quotes means we might have broken on tests with paths containing spaces.
author Matt Mackall <mpm@selenic.com>
date Mon, 08 Jun 2015 14:44:30 -0500
parents 378a8e700e02
children 123c99034cb6
files tests/test-archive-symlinks.t tests/test-archive.t tests/test-bad-pull.t tests/test-bookmarks-pushpull.t tests/test-bundle2-exchange.t tests/test-bundle2-remote-changegroup.t tests/test-convert-mtn.t tests/test-convert-svn-sink.t tests/test-convert-svn-source.t tests/test-copy.t tests/test-gpg.t tests/test-help.t tests/test-hghave.t tests/test-hgweb-bundle.t tests/test-hgweb-commands.t tests/test-hgweb-descend-empties.t tests/test-hgweb-diffs.t tests/test-hgweb-empty.t tests/test-hgweb-filelog.t tests/test-hgweb-json.t tests/test-hgweb-raw.t tests/test-hgweb-removed.t tests/test-hgweb.t tests/test-hgwebdir.t tests/test-hgwebdirsym.t tests/test-highlight.t tests/test-http-branchmap.t tests/test-http-proxy.t tests/test-https.t tests/test-keyword.t tests/test-known.t tests/test-largefiles-misc.t tests/test-largefiles-wireproto.t tests/test-largefiles.t tests/test-lfconvert.t tests/test-mq-qclone-http.t tests/test-mq-qimport.t tests/test-mq-symlinks.t tests/test-obsolete.t tests/test-phases-exchange.t tests/test-pull-http.t tests/test-push-http-bundle1.t tests/test-push-http.t tests/test-run-tests.t tests/test-serve.t tests/test-setdiscovery.t tests/test-share.t tests/test-static-http.t tests/test-subrepo-relative-path.t tests/test-symlinks.t tests/test-transplant.t tests/test-treediscovery-legacy.t tests/test-treediscovery.t tests/test-unbundlehash.t tests/test-unified-test.t tests/test-verify.t tests/test-websub.t tests/test-wireproto.t
diffstat 58 files changed, 325 insertions(+), 325 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-archive-symlinks.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-archive-symlinks.t	Mon Jun 08 14:44:30 2015 -0500
@@ -18,7 +18,7 @@
 
   $ cd "$origdir"
   $ cd archive
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> nothing
 
 tar
@@ -26,7 +26,7 @@
   $ cd "$origdir"
   $ tar xf archive.tar
   $ cd tar
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> nothing
 
 zip
@@ -34,7 +34,7 @@
   $ cd "$origdir"
   $ unzip archive.zip > /dev/null 2>&1
   $ cd zip
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> nothing
 
   $ cd ..
--- a/tests/test-archive.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-archive.t	Mon Jun 08 14:44:30 2015 -0500
@@ -27,11 +27,11 @@
   >     hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
   >     cat hg.pid >> $DAEMON_PIDS
   >     echo % $1 allowed should give 200
-  >     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "archive/tip.$2" | head -n 1
+  >     get-with-headers.py localhost:$HGPORT "archive/tip.$2" | head -n 1
   >     echo % $3 and $4 disallowed should both give 403
-  >     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "archive/tip.$3" | head -n 1
-  >     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "archive/tip.$4" | head -n 1
-  >     "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >     get-with-headers.py localhost:$HGPORT "archive/tip.$3" | head -n 1
+  >     get-with-headers.py localhost:$HGPORT "archive/tip.$4" | head -n 1
+  >     killdaemons.py $DAEMON_PIDS
   >     cat errors.log
   >     cp .hg/hgrc-base .hg/hgrc
   > }
@@ -63,7 +63,7 @@
 
 invalid arch type should give 404
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT "archive/tip.invalid" | head -n 1
+  $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
   404 Unsupported archive type: None
 
   $ TIP=`hg id -v | cut -f1 -d' '`
@@ -134,7 +134,7 @@
   $ python getarchive.py "$TIP" gz relre:baz
   HTTP Error 404: file(s) not found: relre:baz
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
   $ hg archive -t tar test.tar
   $ tar tf test.tar
--- a/tests/test-bad-pull.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-bad-pull.t	Mon Jun 08 14:44:30 2015 -0500
@@ -18,4 +18,4 @@
   $ hg clone http://localhost:$HGPORT/foo copy2
   abort: HTTP Error 404: * (glob)
   [255]
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
--- a/tests/test-bookmarks-pushpull.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-bookmarks-pushpull.t	Mon Jun 08 14:44:30 2015 -0500
@@ -284,7 +284,7 @@
 (new config needs a server restart)
 
   $ cd ..
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg -R pull-race serve -p $HGPORT -d --pid-file=pull-race.pid -E main-error.log
   $ cat pull-race.pid >> $DAEMON_PIDS
   $ cd pull-race2
@@ -321,7 +321,7 @@
 
 (new config need server restart)
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg -R ../pull-race serve -p $HGPORT -d --pid-file=../pull-race.pid -E main-error.log
   $ cat ../pull-race.pid >> $DAEMON_PIDS
 
@@ -347,7 +347,7 @@
 
 (done with this section of the test)
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cd ../b
 
 diverging a remote bookmark fails
@@ -743,7 +743,7 @@
   > push_ssl = false
   > allow_push = *
   > EOF
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg -R ../issue4455-dest serve -p $HGPORT -d --pid-file=../issue4455.pid -E ../issue4455-error.log
   $ cat ../issue4455.pid >> $DAEMON_PIDS
 
--- a/tests/test-bundle2-exchange.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-bundle2-exchange.t	Mon Jun 08 14:44:30 2015 -0500
@@ -466,7 +466,7 @@
   > failpush=$TESTTMP/failpush.py
   > EOF
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg -R other serve -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
   $ cat other.pid >> $DAEMON_PIDS
 
@@ -562,7 +562,7 @@
   > txnabort.failpush = sh -c "echo 'Cleaning up the mess...'"
   > EOF
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg -R other serve -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
   $ cat other.pid >> $DAEMON_PIDS
 
@@ -625,7 +625,7 @@
   $ cat << EOF >> $HGRCPATH
   > pretxnchangegroup = sh -c "echo 'Fail early!'; false"
   > EOF
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
+  $ killdaemons.py $DAEMON_PIDS # reload http config
   $ hg -R other serve -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
   $ cat other.pid >> $DAEMON_PIDS
 
--- a/tests/test-bundle2-remote-changegroup.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-bundle2-remote-changegroup.t	Mon Jun 08 14:44:30 2015 -0500
@@ -589,4 +589,4 @@
   
   $ rm -rf clone
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
--- a/tests/test-convert-mtn.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-convert-mtn.t	Mon Jun 08 14:44:30 2015 -0500
@@ -220,7 +220,7 @@
   >>> fp = file('large-file', 'wb')
   >>> for x in xrange(10000): fp.write('%d\n' % x)
   >>> fp.close()
-  $ $TESTDIR/md5sum.py large-file
+  $ md5sum.py large-file
   5d6de8a95c3b6bf9e0ffb808ba5299c1  large-file
   $ mtn add large-file
   mtn: adding 'large-file' to workspace manifest
@@ -386,7 +386,7 @@
 
 test large file support (> 32kB)
 
-  $ $TESTDIR/md5sum.py large-file
+  $ md5sum.py large-file
   5d6de8a95c3b6bf9e0ffb808ba5299c1  large-file
 
 check branch closing
--- a/tests/test-convert-svn-sink.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-convert-svn-sink.t	Mon Jun 08 14:44:30 2015 -0500
@@ -32,7 +32,7 @@
 
 Modify
 
-  $ "$TESTDIR/svn-safe-append.py" a a/a
+  $ svn-safe-append.py a a/a
   $ hg --cwd a ci -d '1 0' -m 'modify a file'
   $ hg --cwd a tip -q
   1:e0e2b8a9156b
@@ -354,12 +354,12 @@
   $ hg --cwd b ci -d '0 0' -Ambase
   adding b
 
-  $ "$TESTDIR/svn-safe-append.py" left-1 b/b
+  $ svn-safe-append.py left-1 b/b
   $ echo left-1 > b/left-1
   $ hg --cwd b ci -d '1 0' -Amleft-1
   adding left-1
 
-  $ "$TESTDIR/svn-safe-append.py" left-2 b/b
+  $ svn-safe-append.py left-2 b/b
   $ echo left-2 > b/left-2
   $ hg --cwd b ci -d '2 0' -Amleft-2
   adding left-2
@@ -367,13 +367,13 @@
   $ hg --cwd b up 0
   1 files updated, 0 files merged, 2 files removed, 0 files unresolved
 
-  $ "$TESTDIR/svn-safe-append.py" right-1 b/b
+  $ svn-safe-append.py right-1 b/b
   $ echo right-1 > b/right-1
   $ hg --cwd b ci -d '3 0' -Amright-1
   adding right-1
   created new head
 
-  $ "$TESTDIR/svn-safe-append.py" right-2 b/b
+  $ svn-safe-append.py right-2 b/b
   $ echo right-2 > b/right-2
   $ hg --cwd b ci -d '4 0' -Amright-2
   adding right-2
--- a/tests/test-convert-svn-source.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-convert-svn-source.t	Mon Jun 08 14:44:30 2015 -0500
@@ -46,7 +46,7 @@
   Transmitting file data .
   Committed revision 2.
 
-  $ "$TESTDIR/svn-safe-append.py" world 'letter .txt'
+  $ svn-safe-append.py world 'letter .txt'
   $ svn ci -m world
   Sending        letter .txt
   Transmitting file data .
@@ -56,7 +56,7 @@
   
   Committed revision 4.
 
-  $ "$TESTDIR/svn-safe-append.py" 'nice day today!' 'letter .txt'
+  $ svn-safe-append.py 'nice day today!' 'letter .txt'
   $ svn ci -m "nice day"
   Sending        letter .txt
   Transmitting file data .
@@ -86,7 +86,7 @@
 Update svn repository again
 
   $ cd B
-  $ "$TESTDIR/svn-safe-append.py" "see second letter" 'letter .txt'
+  $ svn-safe-append.py "see second letter" 'letter .txt'
   $ echo "nice to meet you" > letter2.txt
   $ svn add letter2.txt
   A         letter2.txt
@@ -100,7 +100,7 @@
   
   Committed revision 7.
 
-  $ "$TESTDIR/svn-safe-append.py" "blah-blah-blah" letter2.txt
+  $ svn-safe-append.py "blah-blah-blah" letter2.txt
   $ svn ci -m "work in progress"
   Sending        letter2.txt
   Transmitting file data .
--- a/tests/test-copy.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-copy.t	Mon Jun 08 14:44:30 2015 -0500
@@ -86,13 +86,13 @@
   copy: a
   copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
 
-  $ "$TESTDIR/md5sum.py" .hg/store/data/b.i
+  $ md5sum.py .hg/store/data/b.i
   4999f120a3b88713bbefddd195cf5133  .hg/store/data/b.i
   $ hg cat b > bsum
-  $ "$TESTDIR/md5sum.py" bsum
+  $ md5sum.py bsum
   60b725f10c9c85c70d97880dfe8191b3  bsum
   $ hg cat a > asum
-  $ "$TESTDIR/md5sum.py" asum
+  $ md5sum.py asum
   60b725f10c9c85c70d97880dfe8191b3  asum
   $ hg verify
   checking changesets
--- a/tests/test-gpg.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-gpg.t	Mon Jun 08 14:44:30 2015 -0500
@@ -38,7 +38,7 @@
 
 verify that this test has not modified the trustdb.gpg file back in
 the main hg working dir
-  $ "$TESTDIR/md5sum.py" "$TESTDIR/gpg/trustdb.gpg"
+  $ md5sum.py "$TESTDIR/gpg/trustdb.gpg"
   f6b9c78c65fa9536e7512bb2ceb338ae  */gpg/trustdb.gpg (glob)
 
 don't leak any state to next test run
--- a/tests/test-help.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-help.t	Mon Jun 08 14:44:30 2015 -0500
@@ -1251,7 +1251,7 @@
   $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
   $ cat hg.pid >> $DAEMON_PIDS
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT "help"
+  $ get-with-headers.py 127.0.0.1:$HGPORT "help"
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1802,7 +1802,7 @@
   </html>
   
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT "help/add"
+  $ get-with-headers.py 127.0.0.1:$HGPORT "help/add"
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1962,7 +1962,7 @@
   </html>
   
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT "help/remove"
+  $ get-with-headers.py 127.0.0.1:$HGPORT "help/remove"
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -2155,7 +2155,7 @@
   </html>
   
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT "help/revisions"
+  $ get-with-headers.py 127.0.0.1:$HGPORT "help/revisions"
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -2250,6 +2250,6 @@
   </html>
   
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 #endif
--- a/tests/test-hghave.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hghave.t	Mon Jun 08 14:44:30 2015 -0500
@@ -1,3 +1,3 @@
 Testing that hghave does not crash when checking features
 
-  $ "$TESTDIR/hghave" --test-features 2>/dev/null
+  $ hghave --test-features 2>/dev/null
--- a/tests/test-hgweb-bundle.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-bundle.t	Mon Jun 08 14:44:30 2015 -0500
@@ -27,7 +27,7 @@
 
 Ensure we're serving from the bundle
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=raw')
   200 Script output follows
   
   
--- a/tests/test-hgweb-commands.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-commands.t	Mon Jun 08 14:44:30 2015 -0500
@@ -53,7 +53,7 @@
 
 Logs and changes
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/?style=atom'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/?style=atom'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -239,7 +239,7 @@
    </entry>
   
   </feed>
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/?style=rss'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/?style=rss'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -413,7 +413,7 @@
   
     </channel>
   </rss> (no-eol)
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/1/?style=atom'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/1/?style=atom'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -513,7 +513,7 @@
    </entry>
   
   </feed>
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/1/?style=rss'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/1/?style=rss'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -607,7 +607,7 @@
   
     </channel>
   </rss> (no-eol)
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/1/foo/?style=atom'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/1/foo/?style=atom'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -662,7 +662,7 @@
    </entry>
   
   </feed>
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/1/foo/?style=rss'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log/1/foo/?style=rss'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -683,7 +683,7 @@
   
     </channel>
   </rss>
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'shortlog/'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -824,7 +824,7 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/0/'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'rev/0/'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -953,7 +953,7 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/1/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'rev/1/?style=raw'
   200 Script output follows
   
   
@@ -970,7 +970,7 @@
   @@ -0,0 +1,1 @@
   +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=base'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=base'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1058,12 +1058,12 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=stable&style=raw' | grep 'revision:'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=stable&style=raw' | grep 'revision:'
   revision:    2
 
 Search with revset syntax
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=tip^&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=tip^&style=raw'
   200 Script output follows
   
   
@@ -1080,7 +1080,7 @@
   branch:      stable
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=last(all(),2)^&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=last(all(),2)^&style=raw'
   200 Script output follows
   
   
@@ -1104,7 +1104,7 @@
   branch:      default
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=last(all(,2)^&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=last(all(,2)^&style=raw'
   200 Script output follows
   
   
@@ -1114,7 +1114,7 @@
   # Mode literal keyword search
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=last(al(),2)^&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=last(al(),2)^&style=raw'
   200 Script output follows
   
   
@@ -1124,7 +1124,7 @@
   # Mode literal keyword search
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=bookmark(anotherthing)&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=bookmark(anotherthing)&style=raw'
   200 Script output follows
   
   
@@ -1142,7 +1142,7 @@
   bookmark:    anotherthing
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=bookmark(abc)&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=bookmark(abc)&style=raw'
   200 Script output follows
   
   
@@ -1152,7 +1152,7 @@
   # Mode literal keyword search
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=deadbeef:&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=deadbeef:&style=raw'
   200 Script output follows
   
   
@@ -1163,7 +1163,7 @@
   
   
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=user("test")&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=user("test")&style=raw'
   200 Script output follows
   
   
@@ -1204,7 +1204,7 @@
   bookmark:    anotherthing
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?rev=user("re:test")&style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'log?rev=user("re:test")&style=raw'
   200 Script output follows
   
   
@@ -1217,11 +1217,11 @@
 
 File-related
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/1/foo/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/1/foo/?style=raw'
   200 Script output follows
   
   foo
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/1/foo/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'annotate/1/foo/?style=raw'
   200 Script output follows
   
   
@@ -1230,7 +1230,7 @@
   
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/1/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/1/?style=raw'
   200 Script output follows
   
   
@@ -1246,7 +1246,7 @@
   $ hg parents --template "{node|short}\n" -r 1 foo
   2ef0ac749a14
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/1/foo'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/1/foo'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1340,7 +1340,7 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'filediff/0/foo/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'filediff/0/foo/?style=raw'
   200 Script output follows
   
   
@@ -1354,7 +1354,7 @@
   
   
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'filediff/1/foo/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'filediff/1/foo/?style=raw'
   200 Script output follows
   
   
@@ -1370,7 +1370,7 @@
   $ hg parents --template "{node|short}\n" -r 2 foo
   2ef0ac749a14
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/2/foo'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/2/foo'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1468,23 +1468,23 @@
 
 Overviews
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'raw-tags'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'raw-tags'
   200 Script output follows
   
   tip	cad8025a2e87f88c06259790adfa15acb4080123
   1.0	2ef0ac749a14e4f57a5a822464a0902c6f7f448f
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'raw-branches'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'raw-branches'
   200 Script output follows
   
   unstable	cad8025a2e87f88c06259790adfa15acb4080123	open
   stable	1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe	inactive
   default	a4f92ed23982be056b9852de5dfe873eaac7f0de	inactive
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'raw-bookmarks'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'raw-bookmarks'
   200 Script output follows
   
   anotherthing	2ef0ac749a14e4f57a5a822464a0902c6f7f448f
   something	cad8025a2e87f88c06259790adfa15acb4080123
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary/?style=gitweb'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'summary/?style=gitweb'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -1686,7 +1686,7 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/?style=gitweb'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'graph/?style=gitweb'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -1833,7 +1833,7 @@
   
 raw graph
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'graph/?style=raw'
   200 Script output follows
   
   
@@ -1883,28 +1883,28 @@
 
 capabilities
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
   200 Script output follows
   
   lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1*%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 (glob)
 
 heads
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=heads'
   200 Script output follows
   
   cad8025a2e87f88c06259790adfa15acb4080123
 
 branches
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
   200 Script output follows
   
   0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
 
 changegroup
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
   200 Script output follows
   
   x\x9c\xbd\x94MHTQ\x14\xc7'+\x9d\xc66\x81\x89P\xc1\xa3\x14\xcct\xba\xef\xbe\xfb\xde\xbb\xcfr0\xb3"\x02\x11[%\x98\xdcO\xa7\xd2\x19\x98y\xd2\x07h"\x96\xa0e\xda\xa6lUY-\xca\x08\xa2\x82\x16\x96\xd1\xa2\xf0#\xc8\x95\x1b\xdd$!m*"\xc8\x82\xea\xbe\x9c\x01\x85\xc9\x996\x1d\xf8\xc1\xe3~\x9d\xff9\xef\x7f\xaf\xcf\xe7\xbb\x19\xfc4\xec^\xcb\x9b\xfbz\xa6\xbe\xb3\x90_\xef/\x8d\x9e\xad\xbe\xe4\xcb0\xd2\xec\xad\x12X:\xc8\x12\x12\xd9:\x95\xba	\x1cG\xb7$\xc5\xc44\x1c(\x1d\x03\x03\xdb\x84\x0cK#\xe0\x8a\xb8\x1b\x00\x1a\x08p\xb2SF\xa3\x01\x8f\x00%q\xa1Ny{k!8\xe5t>[{\xe2j\xddl\xc3\xcf\xee\xd0\xddW\x9ff3U\x9djobj\xbb\x87E\x88\x05l\x001\x12\x18\x13\xc6 \xb7(\xe3\x02a\x80\x81\xcel.u\x9b\x1b\x8c\x91\x80Z\x0c\x15\x15 (esc)
@@ -1915,14 +1915,14 @@
 
 stream_out
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=stream_out'
   200 Script output follows
   
   1
 
 failing unbundle, requires POST request
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=unbundle'
   405 push requires POST request
   
   0
@@ -1931,7 +1931,7 @@
 
 Static files
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'static/style.css'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'static/style.css'
   200 Script output follows
   
   a { text-decoration:none; }
@@ -2043,7 +2043,7 @@
 
 Stop and restart with HGENCODING=cp932 and preferuncompressed
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ HGENCODING=cp932 hg serve --config server.preferuncompressed=True -n test \
   >     -p $HGPORT -d --pid-file=hg.pid -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
@@ -2055,7 +2055,7 @@
 
 Graph json escape of multibyte character
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/' > out
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'graph/' > out
   >>> for line in open("out"):
   ...     if line.startswith("var data ="):
   ...         print line,
@@ -2063,7 +2063,7 @@
 
 capabilities
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
+  $ get-with-headers.py 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
   200 Script output follows
   
   lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream-preferred stream bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1*%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 (glob)
@@ -2073,7 +2073,7 @@
 ERRORS ENCOUNTERED
 
   $ cat errors.log
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
   $ cd ..
 
@@ -2112,23 +2112,23 @@
 
 Test paging
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  $ get-with-headers.py 127.0.0.1:$HGPORT \
   >   'graph/?style=raw' | grep changeset
   changeset:   aed2d9c1d0e7
   changeset:   b60a39a85a01
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  $ get-with-headers.py 127.0.0.1:$HGPORT \
   >   'graph/?style=raw&revcount=3' | grep changeset
   changeset:   aed2d9c1d0e7
   changeset:   b60a39a85a01
   changeset:   ada793dcc118
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  $ get-with-headers.py 127.0.0.1:$HGPORT \
   >   'graph/e06180cbfb0?style=raw&revcount=3' | grep changeset
   changeset:   e06180cbfb0c
   changeset:   b4e73ffab476
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  $ get-with-headers.py 127.0.0.1:$HGPORT \
   >   'graph/b4e73ffab47?style=raw&revcount=3' | grep changeset
   changeset:   b4e73ffab476
 
--- a/tests/test-hgweb-descend-empties.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-descend-empties.t	Mon Jun 08 14:44:30 2015 -0500
@@ -29,7 +29,7 @@
 
 manifest with descending (paper)
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -145,7 +145,7 @@
 
 manifest with descending (coal)
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=coal'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file?style=coal'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -261,7 +261,7 @@
 
 manifest with descending (monoblue)
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=monoblue'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file?style=monoblue'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@@ -380,7 +380,7 @@
 
 manifest with descending (gitweb)
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=gitweb'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file?style=gitweb'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -484,7 +484,7 @@
 
 manifest with descending (spartan)
 
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=spartan'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file?style=spartan'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
--- a/tests/test-hgweb-diffs.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-diffs.t	Mon Jun 08 14:44:30 2015 -0500
@@ -36,7 +36,7 @@
 
 revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/0'
+  $ get-with-headers.py localhost:$HGPORT 'rev/0'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -168,7 +168,7 @@
 
 raw revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'raw-rev/0'
+  $ get-with-headers.py localhost:$HGPORT 'raw-rev/0'
   200 Script output follows
   
   
@@ -201,7 +201,7 @@
   $ hg parents --template "{node|short}\n" -r tip b
   0cd96de13884
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/b'
+  $ get-with-headers.py localhost:$HGPORT 'diff/tip/b'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -302,13 +302,13 @@
 
 set up hgweb with git diffs
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
 
 revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/0'
+  $ get-with-headers.py localhost:$HGPORT 'rev/0'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -442,7 +442,7 @@
 
 revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'raw-rev/0'
+  $ get-with-headers.py localhost:$HGPORT 'raw-rev/0'
   200 Script output follows
   
   
@@ -477,7 +477,7 @@
   $ hg parents --template "{node|short}\n" -r tip a
   0cd96de13884
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/a'
+  $ get-with-headers.py localhost:$HGPORT 'diff/tip/a'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -580,7 +580,7 @@
   $ hg log --template "{rev}:{node|short}\n" -r 0
   0:0cd96de13884
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'comparison/0/a'
+  $ get-with-headers.py localhost:$HGPORT 'comparison/0/a'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -707,7 +707,7 @@
   $ hg log --template "{rev}:{node|short}\n" -r tip
   2:d73db4d812ff
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'comparison/tip/a'
+  $ get-with-headers.py localhost:$HGPORT 'comparison/tip/a'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -836,7 +836,7 @@
   $ hg log --template "{rev}:{node|short}\n" -r tip
   3:20e80271eb7a
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'comparison/tip/a'
+  $ get-with-headers.py localhost:$HGPORT 'comparison/tip/a'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -971,7 +971,7 @@
   $ hg parents --template "{rev}:{node|short}\n" -r tip e
   4:402bea3b0976
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'comparison/tip/e'
+  $ get-with-headers.py localhost:$HGPORT 'comparison/tip/e'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1094,7 +1094,7 @@
 
 raw revision with diff block numbers
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat <<EOF > .hg/hgrc
   > [web]
   > templates = rawdiff
@@ -1114,7 +1114,7 @@
   > EOF
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'raw-rev/0'
+  $ get-with-headers.py localhost:$HGPORT 'raw-rev/0'
   200 Script output follows
   
   Block: 1
@@ -1131,7 +1131,7 @@
   @@ -0,0 +1,1 @@
   +b
   
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ rm .hg/hgrc rawdiff/map
   $ rmdir rawdiff
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
--- a/tests/test-hgweb-empty.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-empty.t	Mon Jun 08 14:44:30 2015 -0500
@@ -6,7 +6,7 @@
   $ cd test
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'shortlog')
+  $ (get-with-headers.py localhost:$HGPORT 'shortlog')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -117,7 +117,7 @@
   
   $ echo babar
   babar
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log')
+  $ (get-with-headers.py localhost:$HGPORT 'log')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -226,7 +226,7 @@
   </body>
   </html>
   
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'graph')
+  $ (get-with-headers.py localhost:$HGPORT 'graph')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -380,7 +380,7 @@
   </body>
   </html>
   
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file')
+  $ (get-with-headers.py localhost:$HGPORT 'file')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
--- a/tests/test-hgweb-filelog.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-filelog.t	Mon Jun 08 14:44:30 2015 -0500
@@ -131,7 +131,7 @@
 
 tip - two revisions
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/tip/a')
+  $ (get-with-headers.py localhost:$HGPORT 'log/tip/a')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -248,7 +248,7 @@
 
 second version - two revisions
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/4/a')
+  $ (get-with-headers.py localhost:$HGPORT 'log/4/a')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -365,7 +365,7 @@
 
 first deleted - one revision
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/3/a')
+  $ (get-with-headers.py localhost:$HGPORT 'log/3/a')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -474,7 +474,7 @@
 
 first version - one revision
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/1/a')
+  $ (get-with-headers.py localhost:$HGPORT 'log/1/a')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -583,7 +583,7 @@
 
 before addition - error
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/0/a')
+  $ (get-with-headers.py localhost:$HGPORT 'log/0/a')
   404 Not Found
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -649,7 +649,7 @@
 
 should show base link, use spartan because it shows it
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log/tip/c?style=spartan')
+  $ (get-with-headers.py localhost:$HGPORT 'log/tip/c?style=spartan')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
@@ -758,7 +758,7 @@
 
 rss log
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rss-log/tip/a')
+  $ (get-with-headers.py localhost:$HGPORT 'rss-log/tip/a')
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -789,7 +789,7 @@
 
 atom log
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'atom-log/tip/a')
+  $ (get-with-headers.py localhost:$HGPORT 'atom-log/tip/a')
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
--- a/tests/test-hgweb-json.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-json.t	Mon Jun 08 14:44:30 2015 -0500
@@ -2,7 +2,7 @@
 #require serve
 
   $ request() {
-  >   $TESTDIR/get-with-headers.py --json localhost:$HGPORT "$1"
+  >   get-with-headers.py --json localhost:$HGPORT "$1"
   > }
 
   $ hg init test
--- a/tests/test-hgweb-raw.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-raw.t	Mon Jun 08 14:44:30 2015 -0500
@@ -17,9 +17,9 @@
   $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid
 
   $ cat hg.pid >> $DAEMON_PIDS
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
+  $ (get-with-headers.py localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
 
-  $ "$TESTDIR/killdaemons.py" hg.pid
+  $ killdaemons.py hg.pid
 
   $ cat getoutput.txt
   200 Script output follows
@@ -39,8 +39,8 @@
   > --config web.guessmime=True
 
   $ cat hg.pid >> $DAEMON_PIDS
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
-  $ "$TESTDIR/killdaemons.py" hg.pid
+  $ (get-with-headers.py localhost:$HGPORT '?f=bf0ff59095c9;file=sub/some%20text%25.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
+  $ killdaemons.py hg.pid
 
   $ cat getoutput.txt
   200 Script output follows
--- a/tests/test-hgweb-removed.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb-removed.t	Mon Jun 08 14:44:30 2015 -0500
@@ -17,7 +17,7 @@
 
 revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/tip'
+  $ get-with-headers.py localhost:$HGPORT 'rev/tip'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -137,7 +137,7 @@
 
 diff removed file
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/a'
+  $ get-with-headers.py localhost:$HGPORT 'diff/tip/a'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
--- a/tests/test-hgweb.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgweb.t	Mon Jun 08 14:44:30 2015 -0500
@@ -15,7 +15,7 @@
 
 manifest
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=raw')
   200 Script output follows
   
   
@@ -23,7 +23,7 @@
   -rw-r--r-- 4 foo
   
   
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw')
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/da?style=raw')
   200 Script output follows
   
   
@@ -33,14 +33,14 @@
 
 plain file
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?style=raw'
   200 Script output follows
   
   foo
 
 should give a 404 - static file that does not exist
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus'
+  $ get-with-headers.py localhost:$HGPORT 'static/bogus'
   404 Not Found
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -106,7 +106,7 @@
 
 should give a 404 - bad revision
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'file/spam/foo?style=raw'
   404 Not Found
   
   
@@ -115,40 +115,40 @@
 
 should give a 400 - bad command
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
   400* (glob)
   
   
   error: no such method: spam
   [1]
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT '?cmd=spam'
+  $ get-with-headers.py --headeronly localhost:$HGPORT '?cmd=spam'
   400 no such method: spam
   [1]
 
 should give a 400 - bad command as a part of url path (issue4071)
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'spam'
   400 no such method: spam
   [1]
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'raw-spam'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'raw-spam'
   400 no such method: spam
   [1]
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam/tip/foo'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'spam/tip/foo'
   400 no such method: spam
   [1]
 
 should give a 404 - file does not exist
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'file/tip/bork?style=raw'
   404 Not Found
   
   
   error: bork@2ef0ac749a14: not found in manifest
   [1]
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork'
+  $ get-with-headers.py localhost:$HGPORT 'file/tip/bork'
   404 Not Found
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -211,7 +211,7 @@
   </html>
   
   [1]
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'diff/tip/bork?style=raw'
   404 Not Found
   
   
@@ -220,7 +220,7 @@
 
 try bad style
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar')
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=foobar')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -321,7 +321,7 @@
 
 stop and restart
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
   $ cat hg.pid >> $DAEMON_PIDS
 
@@ -332,7 +332,7 @@
 
 static file
 
-  $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
+  $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
   200 Script output follows
   content-length: 5372
   content-type: text/css
@@ -540,7 +540,7 @@
 
   $ echo bar >> foo
   $ hg ci -msecret --secret
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
   200 Script output follows
   
   
@@ -557,7 +557,7 @@
   
   
   $ hg phase --draft tip
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
   200 Script output follows
   
   
@@ -594,27 +594,27 @@
   > mimetype = 'text/plain'
   > EOF
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log \
   > --config web.style=fallback --config web.templates=x/templates
   $ cat hg.pid >> $DAEMON_PIDS
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT "?style=`pwd`/x"
+  $ get-with-headers.py localhost:$HGPORT "?style=`pwd`/x"
   200 Script output follows
   
   fall back to default
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=..'
+  $ get-with-headers.py localhost:$HGPORT '?style=..'
   200 Script output follows
   
   fall back to default
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=./..'
+  $ get-with-headers.py localhost:$HGPORT '?style=./..'
   200 Script output follows
   
   fall back to default
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=.../.../'
+  $ get-with-headers.py localhost:$HGPORT '?style=.../.../'
   200 Script output follows
   
   fall back to default
@@ -625,18 +625,18 @@
 
 Uncaught exceptions result in a logged error and canned HTTP response
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
 
-  $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
+  $ get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
   500 Internal Server Error
   transfer-encoding: chunked
   
   Internal Server Error (no-eol)
   [1]
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ head -1 errors.log
   .* Exception happened during processing request '/raiseerror': (re)
 
@@ -644,7 +644,7 @@
 
   $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
+  $ get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
   200 Script output follows
   transfer-encoding: chunked
   content-type: text/plain
@@ -652,5 +652,5 @@
   partial content
   Internal Server Error (no-eol)
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cd ..
--- a/tests/test-hgwebdir.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgwebdir.t	Mon Jun 08 14:44:30 2015 -0500
@@ -84,7 +84,7 @@
 
 should give a 404 - file does not exist
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'a/file/tip/bork?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'a/file/tip/bork?style=raw'
   404 Not Found
   
   
@@ -93,25 +93,25 @@
 
 should succeed
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT '?style=raw'
   200 Script output follows
   
   
   /a/
   /b/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'a/file/tip/a?style=raw'
   200 Script output follows
   
   a
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'b/file/tip/b?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
   200 Script output follows
   
   b
 
 should give a 404 - repo is not published
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'c/file/tip/c?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
   404 Not Found
   
   
@@ -120,14 +120,14 @@
 
 atom-log without basedir
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'a/atom-log' | grep '<link'
+  $ get-with-headers.py localhost:$HGPORT 'a/atom-log' | grep '<link'
    <link rel="self" href="http://*:$HGPORT/a/atom-log"/> (glob)
    <link rel="alternate" href="http://*:$HGPORT/a/"/> (glob)
     <link href="http://*:$HGPORT/a/rev/8580ff50825a"/> (glob)
 
 rss-log without basedir
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'a/rss-log' | grep '<guid'
+  $ get-with-headers.py localhost:$HGPORT 'a/rss-log' | grep '<guid'
       <guid isPermaLink="true">http://*:$HGPORT/a/rev/8580ff50825a</guid> (glob)
   $ cat > paths.conf <<EOF
   > [paths]
@@ -145,7 +145,7 @@
 
 should succeed, slashy names
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
   200 Script output follows
   
   
@@ -184,7 +184,7 @@
   /astar/
   /astar/.hg/patches/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=paper'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=paper'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -672,19 +672,19 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't?style=raw'
   200 Script output follows
   
   
   /t/a/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
   200 Script output follows
   
   
   /t/a/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/?style=paper'
+  $ get-with-headers.py localhost:$HGPORT1 't/?style=paper'
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -743,7 +743,7 @@
   </body>
   </html>
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/a?style=atom'
+  $ get-with-headers.py localhost:$HGPORT1 't/a?style=atom'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -800,7 +800,7 @@
    </entry>
   
   </feed>
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/a/?style=atom'
+  $ get-with-headers.py localhost:$HGPORT1 't/a/?style=atom'
   200 Script output follows
   
   <?xml version="1.0" encoding="ascii"?>
@@ -857,14 +857,14 @@
    </entry>
   
   </feed>
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't/a/file/tip/a?style=raw'
   200 Script output follows
   
   a
 
 Test [paths] '*' extension
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
   200 Script output follows
   
   
@@ -875,14 +875,14 @@
   /coll/notrepo/e/
   /coll/notrepo/f/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
   200 Script output follows
   
   a
 
 Test [paths] '**' extension
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
   200 Script output follows
   
   
@@ -896,14 +896,14 @@
   /rcoll/notrepo/f/
   /rcoll/notrepo/f/f2/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
   200 Script output follows
   
   d
 
 Test collapse = True
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat >> paths.conf <<EOF
   > [web]
   > collapse=true
@@ -912,7 +912,7 @@
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
   >     -A access-paths.log -E error-paths-3.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
   200 Script output follows
   
   
@@ -922,11 +922,11 @@
   /coll/c/
   /coll/notrepo/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
   200 Script output follows
   
   a
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
   200 Script output follows
   
   
@@ -937,7 +937,7 @@
   /rcoll/c/
   /rcoll/notrepo/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
   200 Script output follows
   
   d
@@ -952,7 +952,7 @@
   > hidden = True
   > EOF
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
   200 Script output follows
   
   
@@ -963,7 +963,7 @@
 Subrepo parent not hidden
   $ mv $root/notrepo/f/.hg/hgrc.bak $root/notrepo/f/.hg/hgrc
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
   200 Script output follows
   
   
@@ -975,28 +975,28 @@
 
 Test repositories inside intermediate directories
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
   200 Script output follows
   
   e
 
 Test subrepositories inside intermediate directories
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
   200 Script output follows
   
   f2
 
 Test descend = False
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat >> paths.conf <<EOF
   > descend=false
   > EOF
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
   >     -A access-paths.log -E error-paths-4.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
   200 Script output follows
   
   
@@ -1004,11 +1004,11 @@
   /coll/b/
   /coll/c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
   200 Script output follows
   
   a
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
   200 Script output follows
   
   
@@ -1016,14 +1016,14 @@
   /rcoll/b/
   /rcoll/c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
   200 Script output follows
   
   d
 
 Test intermediate directories
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
   200 Script output follows
   
   
@@ -1033,14 +1033,14 @@
 
 Test repositories inside intermediate directories
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
   200 Script output follows
   
   e
 
 Test subrepositories inside intermediate directories
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
   200 Script output follows
   
   f2
@@ -1050,7 +1050,7 @@
   $ hg id http://localhost:$HGPORT1/astar
   8580ff50825a
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat > paths.conf <<EOF
   > [paths]
   > t/a = $root/a
@@ -1060,7 +1060,7 @@
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
   >     -A access-paths.log -E error-paths-5.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
   200 Script output follows
   
   
@@ -1068,7 +1068,7 @@
   /t/b/
   /c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
   200 Script output follows
   
   
@@ -1078,7 +1078,7 @@
 
 Test collapse = True
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat >> paths.conf <<EOF
   > [web]
   > collapse=true
@@ -1086,14 +1086,14 @@
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
   >     -A access-paths.log -E error-paths-6.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
   200 Script output follows
   
   
   /t/
   /c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
   200 Script output follows
   
   
@@ -1103,27 +1103,27 @@
 
 test descend = False
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat >> paths.conf <<EOF
   > descend=false
   > EOF
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
   >     -A access-paths.log -E error-paths-7.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
   200 Script output follows
   
   
   /c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 't/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
   200 Script output follows
   
   
   /t/a/
   /t/b/
   
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cat > paths.conf <<EOF
   > [paths]
   > nostore = $root/nostore
@@ -1135,7 +1135,7 @@
 
 test inexistent and inaccessible repo should be ignored silently
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 ''
+  $ get-with-headers.py localhost:$HGPORT1 ''
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1192,7 +1192,7 @@
 
 collections: should succeed
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
   200 Script output follows
   
   
@@ -1203,31 +1203,31 @@
   /notrepo/e/
   /notrepo/f/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'a/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT2 'a/file/tip/a?style=raw'
   200 Script output follows
   
   a
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'b/file/tip/b?style=raw'
+  $ get-with-headers.py localhost:$HGPORT2 'b/file/tip/b?style=raw'
   200 Script output follows
   
   b
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'c/file/tip/c?style=raw'
+  $ get-with-headers.py localhost:$HGPORT2 'c/file/tip/c?style=raw'
   200 Script output follows
   
   c
 
 atom-log with basedir /
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'a/atom-log' | grep '<link'
+  $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
    <link rel="self" href="http://hg.example.com:8080/a/atom-log"/>
    <link rel="alternate" href="http://hg.example.com:8080/a/"/>
     <link href="http://hg.example.com:8080/a/rev/8580ff50825a"/>
 
 rss-log with basedir /
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'a/rss-log' | grep '<guid'
+  $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
       <guid isPermaLink="true">http://hg.example.com:8080/a/rev/8580ff50825a</guid>
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \
   >     --pid-file=hg.pid --webdir-conf collections.conf \
   >     -A access-collections-2.log -E error-collections-2.log
@@ -1235,14 +1235,14 @@
 
 atom-log with basedir /foo/
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'a/atom-log' | grep '<link'
+  $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
    <link rel="self" href="http://hg.example.com:8080/foo/a/atom-log"/>
    <link rel="alternate" href="http://hg.example.com:8080/foo/a/"/>
     <link href="http://hg.example.com:8080/foo/a/rev/8580ff50825a"/>
 
 rss-log with basedir /foo/
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 'a/rss-log' | grep '<guid'
+  $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
       <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid>
 
 paths errors 1
--- a/tests/test-hgwebdirsym.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-hgwebdirsym.t	Mon Jun 08 14:44:30 2015 -0500
@@ -33,7 +33,7 @@
 
 should succeed
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT '?style=raw'
   200 Script output follows
   
   
@@ -41,34 +41,34 @@
   /b/
   /c/
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'al/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'al/file/tip/a?style=raw'
   200 Script output follows
   
   a
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'b/file/tip/b?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
   200 Script output follows
   
   b
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'c/file/tip/c?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
   200 Script output follows
   
   c
 
 should fail
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'circle/al/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'circle/al/file/tip/a?style=raw'
   404 Not Found
   
   
   error: repository circle/al/file/tip/a not found
   [1]
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'circle/b/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'circle/b/file/tip/a?style=raw'
   404 Not Found
   
   
   error: repository circle/b/file/tip/a not found
   [1]
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'circle/c/file/tip/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'circle/c/file/tip/a?style=raw'
   404 Not Found
   
   
--- a/tests/test-highlight.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-highlight.t	Mon Jun 08 14:44:30 2015 -0500
@@ -55,7 +55,7 @@
 
 hgweb filerevision, html
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/primes.py') \
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py') \
   >     | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
   200 Script output follows
   
@@ -185,7 +185,7 @@
 
 hgweb fileannotate, html
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'annotate/tip/primes.py') \
+  $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py') \
   >     | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
   200 Script output follows
   
@@ -515,7 +515,7 @@
 
 hgweb fileannotate, raw
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
+  $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
   >     | sed "s/test@//" > a
   $ echo "200 Script output follows" > b
   $ echo "" >> b
@@ -529,7 +529,7 @@
 
 hgweb filerevision, raw
 
-  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/primes.py?style=raw') \
+  $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py?style=raw') \
   >     > a
   $ echo "200 Script output follows" > b
   $ echo "" >> b
@@ -538,7 +538,7 @@
 
 hgweb highlightcss friendly
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'highlightcss' > out
+  $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
   $ head -n 4 out
   200 Script output follows
   
@@ -549,7 +549,7 @@
 errors encountered
 
   $ cat errors.log
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 Change the pygments style
 
@@ -565,7 +565,7 @@
 
 hgweb highlightcss fruity
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'highlightcss' > out
+  $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
   $ head -n 4 out
   200 Script output follows
   
@@ -583,13 +583,13 @@
   $ hg ci -Ama
   adding eucjp.txt
   $ hgserveget () {
-  >     "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >     killdaemons.py $DAEMON_PIDS
   >     echo % HGENCODING="$1" hg serve
   >     HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
   >     cat hg.pid >> $DAEMON_PIDS
   > 
   >     echo % hgweb filerevision, html
-  >     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "file/tip/$2" \
+  >     get-with-headers.py localhost:$HGPORT "file/tip/$2" \
   >         | grep '<div class="parity0 source">'
   >     echo % errors encountered
   >     cat errors.log
--- a/tests/test-http-branchmap.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-http-branchmap.t	Mon Jun 08 14:44:30 2015 -0500
@@ -54,7 +54,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     foo
   
-  $ "$TESTDIR/killdaemons.py" hg.pid
+  $ killdaemons.py hg.pid
 
 verify 7e7d56fe4833 (encoding fallback in branchmap to maintain compatibility with 1.3.x)
 
--- a/tests/test-http-proxy.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-http-proxy.t	Mon Jun 08 14:44:30 2015 -0500
@@ -14,7 +14,7 @@
   $ hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=hg.pid
   $ cat hg.pid >> $DAEMON_PIDS
   $ cd ..
-  $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
+  $ tinyproxy.py $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
   $ while [ ! -f proxy.pid ]; do sleep 0; done
   $ cat proxy.pid >> $DAEMON_PIDS
 
--- a/tests/test-https.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-https.t	Mon Jun 08 14:44:30 2015 -0500
@@ -302,11 +302,11 @@
   5fed3813f7f5
 
 HGPORT1 is reused below for tinyproxy tests. Kill that server.
-  $ "$TESTDIR/killdaemons.py" hg1.pid
+  $ killdaemons.py hg1.pid
 
 Prepare for connecting through proxy
 
-  $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log </dev/null 2>&1 &
+  $ tinyproxy.py $HGPORT1 localhost >proxy.log </dev/null 2>&1 &
   $ while [ ! -f proxy.pid ]; do sleep 0; done
   $ cat proxy.pid >> $DAEMON_PIDS
 
@@ -346,7 +346,7 @@
   [255]
 
 
-  $ "$TESTDIR/killdaemons.py" hg0.pid
+  $ killdaemons.py hg0.pid
 
 #if sslcontext
 
--- a/tests/test-keyword.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-keyword.t	Mon Jun 08 14:44:30 2015 -0500
@@ -980,14 +980,14 @@
 
   $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/a/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'file/tip/a/?style=raw'
   200 Script output follows
   
   expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $
   do not process $Id:
   xxx $
   $Xinfo: User Name <user@example.com>: firstline $
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'annotate/tip/a/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'annotate/tip/a/?style=raw'
   200 Script output follows
   
   
@@ -999,7 +999,7 @@
   
   
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/tip/?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'rev/tip/?style=raw'
   200 Script output follows
   
   
@@ -1019,7 +1019,7 @@
   +xxx $
   +$Xinfo$
   
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/bb948857c743/a?style=raw'
+  $ get-with-headers.py localhost:$HGPORT 'diff/bb948857c743/a?style=raw'
   200 Script output follows
   
   
--- a/tests/test-known.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-known.t	Mon Jun 08 14:44:30 2015 -0500
@@ -35,5 +35,5 @@
   $ hg debugknown http://localhost:$HGPORT/
   
   $ cat error.log
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
--- a/tests/test-largefiles-misc.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-largefiles-misc.t	Mon Jun 08 14:44:30 2015 -0500
@@ -984,7 +984,7 @@
   > EOF
   $ hg -R pull-dst -q pull -u http://localhost:$HGPORT
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 #endif
 
 Test overridden functions work correctly even for repos disabling
--- a/tests/test-largefiles-wireproto.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-largefiles-wireproto.t	Mon Jun 08 14:44:30 2015 -0500
@@ -106,7 +106,7 @@
   [255]
 
 used all HGPORTs, kill all daemons
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 #endif
 
 vanilla clients locked out from largefiles ssh repos
@@ -291,6 +291,6 @@
   $ rm -rf empty http-clone*
 
 used all HGPORTs, kill all daemons
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 #endif
--- a/tests/test-largefiles.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-largefiles.t	Mon Jun 08 14:44:30 2015 -0500
@@ -196,7 +196,7 @@
 
   $ hg serve -d -p $HGPORT --pid-file ../hg.pid
   $ cat ../hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/tip/?style=raw'
   200 Script output follows
   
   
@@ -205,7 +205,7 @@
   -rw-r--r-- 9 normal3
   
   
-  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
+  $ get-with-headers.py 127.0.0.1:$HGPORT 'file/tip/sub/?style=raw'
   200 Script output follows
   
   
@@ -213,7 +213,7 @@
   -rw-r--r-- 9 normal4
   
   
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 #endif
 
 Test archiving the various revisions.  These hit corner cases known with
--- a/tests/test-lfconvert.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-lfconvert.t	Mon Jun 08 14:44:30 2015 -0500
@@ -89,7 +89,7 @@
   normal
   $ cat sub/normal2
   alsonormal
-  $ "$TESTDIR/md5sum.py" large sub/maybelarge.dat
+  $ md5sum.py large sub/maybelarge.dat
   ec87a838931d4d5d2e94a04644788a55  large
   1276481102f218c981e0324180bafd9f  sub/maybelarge.dat
 
@@ -115,7 +115,7 @@
   $ echo blah >> normal3
   $ echo blah >> sub/normal2
   $ echo blah >> sub/maybelarge.dat
-  $ "$TESTDIR/md5sum.py" sub/maybelarge.dat
+  $ md5sum.py sub/maybelarge.dat
   1dd0b99ff80e19cff409702a1d3f5e15  sub/maybelarge.dat
   $ hg commit -A -m"add normal3, modify sub/*"
   adding normal3
@@ -193,7 +193,7 @@
   $ cat stuff/normal2
   alsonormal
   blah
-  $ "$TESTDIR/md5sum.py" stuff/maybelarge.dat
+  $ md5sum.py stuff/maybelarge.dat
   1dd0b99ff80e19cff409702a1d3f5e15  stuff/maybelarge.dat
   $ cat .hglf/stuff/maybelarge.dat
   76236b6a2c6102826c61af4297dd738fb3b1de38
--- a/tests/test-mq-qclone-http.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-mq-qclone-http.t	Mon Jun 08 14:44:30 2015 -0500
@@ -34,7 +34,7 @@
   $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
   >     -A access-paths.log -E error-paths-1.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT '?style=raw'
   200 Script output follows
   
   
@@ -73,7 +73,7 @@
   $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf collections1.conf \
   >     -A access-paths.log -E error-paths-1.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
   200 Script output follows
   
   
@@ -112,7 +112,7 @@
   $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --webdir-conf collections2.conf \
   >     -A access-paths.log -E error-paths-1.log
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '?style=raw'
+  $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
   200 Script output follows
   
   
@@ -152,5 +152,5 @@
   $ hg --cwd d log --mq --template '{rev} {desc|firstline}\n'
   0 b.patch
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
--- a/tests/test-mq-qimport.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-mq-qimport.t	Mon Jun 08 14:44:30 2015 -0500
@@ -289,4 +289,4 @@
 
   $ cd ..
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
--- a/tests/test-mq-symlinks.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-mq-symlinks.t	Mon Jun 08 14:44:30 2015 -0500
@@ -11,7 +11,7 @@
   $ echo ccc > c
   $ hg add a b c
   $ hg qrefresh
-  $ "$TESTDIR/readlink.py" a
+  $ readlink.py a
   a -> a not a symlink
 
 
@@ -21,7 +21,7 @@
   $ rm a
   $ ln -s b a
   $ hg qrefresh --git
-  $ "$TESTDIR/readlink.py" a
+  $ readlink.py a
   a -> b
 
   $ hg qpop
@@ -30,7 +30,7 @@
   $ hg qpush
   applying symlink.patch
   now at: symlink.patch
-  $ "$TESTDIR/readlink.py" a
+  $ readlink.py a
   a -> b
 
 
@@ -39,7 +39,7 @@
   $ rm a
   $ ln -s c a
   $ hg qnew --git -f updatelink
-  $ "$TESTDIR/readlink.py" a
+  $ readlink.py a
   a -> c
   $ hg qpop
   popping updatelink
@@ -52,7 +52,7 @@
   committing manifest
   committing changelog
   now at: updatelink
-  $ "$TESTDIR/readlink.py" a
+  $ readlink.py a
   a -> c
   $ hg st
 
@@ -107,5 +107,5 @@
   $ hg qpush
   applying movelink
   now at: movelink
-  $ "$TESTDIR/readlink.py" linkb
+  $ readlink.py linkb
   linkb -> linkb
--- a/tests/test-obsolete.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-obsolete.t	Mon Jun 08 14:44:30 2015 -0500
@@ -658,37 +658,37 @@
 
 check changelog view
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'shortlog/'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'shortlog/'
   200 Script output follows
 
 check graph view
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'graph'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'graph'
   200 Script output follows
 
 check filelog view
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'log/'`hg log -r . -T "{node}"`/'babar'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'log/'`hg log -r . -T "{node}"`/'babar'
   200 Script output follows
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'rev/68'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/68'
   200 Script output follows
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'rev/67'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
   404 Not Found
   [1]
 
 check that web.view config option:
 
-  $ "$TESTDIR/killdaemons.py" hg.pid
+  $ killdaemons.py hg.pid
   $ cat >> .hg/hgrc << EOF
   > [web]
   > view=all
   > EOF
   $ wait
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'rev/67'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67'
   200 Script output follows
-  $ "$TESTDIR/killdaemons.py" hg.pid
+  $ killdaemons.py hg.pid
 
 Checking _enable=False warning if obsolete marker exists
 
@@ -756,7 +756,7 @@
   no changes found
   [1]
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 #endif
 
@@ -885,15 +885,15 @@
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
 
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'rev/1'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/1'
   404 Not Found
   [1]
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'file/tip/bar'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'file/tip/bar'
   200 Script output follows
-  $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'annotate/tip/bar'
+  $ get-with-headers.py --headeronly localhost:$HGPORT 'annotate/tip/bar'
   200 Script output follows
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 #endif
 
--- a/tests/test-phases-exchange.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-phases-exchange.t	Mon Jun 08 14:44:30 2015 -0500
@@ -1193,6 +1193,6 @@
 
   $ cd ..
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 #endif
--- a/tests/test-pull-http.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-pull-http.t	Mon Jun 08 14:44:30 2015 -0500
@@ -40,7 +40,7 @@
   [ui]
   # name and email (local to this repository, optional), e.g.
   # username = Jane Doe <jdoe@example.com>
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 expect error, cloning not allowed
 
@@ -55,7 +55,7 @@
   $ hg clone http://localhost:$HGPORT/ test4 --config experimental.bundle2-exp=False
   abort: authorization failed
   [255]
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 serve errors
 
@@ -64,7 +64,7 @@
   >     hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
   >     cat hg.pid >> $DAEMON_PIDS
   >     hg --cwd ../test pull http://localhost:$HGPORT/
-  >     "$TESTDIR/killdaemons.py" hg.pid
+  >     killdaemons.py hg.pid
   >     echo % serve errors
   >     cat errors.log
   > }
--- a/tests/test-push-http-bundle1.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-push-http-bundle1.t	Mon Jun 08 14:44:30 2015 -0500
@@ -27,7 +27,7 @@
   >     cat hg.pid >> $DAEMON_PIDS
   >     hg --cwd ../test2 push http://localhost:$HGPORT/
   >     exitstatus=$?
-  >     "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >     killdaemons.py $DAEMON_PIDS
   >     echo % serve errors
   >     cat errors.log
   >     return $exitstatus
--- a/tests/test-push-http.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-push-http.t	Mon Jun 08 14:44:30 2015 -0500
@@ -17,7 +17,7 @@
   >     cat hg.pid >> $DAEMON_PIDS
   >     hg --cwd ../test2 push http://localhost:$HGPORT/
   >     exitstatus=$?
-  >     "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >     killdaemons.py $DAEMON_PIDS
   >     echo % serve errors
   >     cat errors.log
   >     return $exitstatus
--- a/tests/test-run-tests.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-run-tests.t	Mon Jun 08 14:44:30 2015 -0500
@@ -10,7 +10,7 @@
 Smoke test
 ============
 
-  $ $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE
+  $ run-tests.py $HGTEST_RUN_TESTS_PURE
   
   # Ran 0 tests, 0 skipped, 0 warned, 0 failed.
 
@@ -26,7 +26,7 @@
   >   nor this (?)
   > EOF
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg`
+  $ run-tests.py --with-hg=`which hg`
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
 
@@ -44,7 +44,7 @@
   >>> fh.write(u'  $ echo babar\u03b1\n'.encode('utf-8')) and None
   >>> fh.write(u'  l\u03b5\u03b5t\n'.encode('utf-8')) and None
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg`
+  $ run-tests.py --with-hg=`which hg`
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -73,7 +73,7 @@
   [1]
 
 test --xunit support
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --xunit=xunit.xml
+  $ run-tests.py --with-hg=`which hg` --xunit=xunit.xml
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -129,7 +129,7 @@
 test for --retest
 ====================
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --retest
+  $ run-tests.py --with-hg=`which hg` --retest
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -152,18 +152,18 @@
 
 successful
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t
+  $ run-tests.py --with-hg=`which hg` test-success.t
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
 
 success w/ keyword
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` -k xyzzy
+  $ run-tests.py --with-hg=`which hg` -k xyzzy
   .
   # Ran 2 tests, 1 skipped, 0 warned, 0 failed.
 
 failed
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-failure.t
+  $ run-tests.py --with-hg=`which hg` test-failure.t
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -182,7 +182,7 @@
   [1]
 
 failure w/ keyword
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` -k rataxes
+  $ run-tests.py --with-hg=`which hg` -k rataxes
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -208,7 +208,7 @@
   $ cat > test-serve-fail.t <<EOF
   >   $ echo 'abort: child process failed to start blah'
   > EOF
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-serve-fail.t
+  $ run-tests.py --with-hg=`which hg` test-serve-fail.t
   
   ERROR: test-serve-fail.t output changed
   !
@@ -224,7 +224,7 @@
 Running In Debug Mode
 ======================
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --debug 2>&1 | grep -v pwd
+  $ run-tests.py --with-hg=`which hg` --debug 2>&1 | grep -v pwd
   + echo *SALT* 0 0 (glob)
   *SALT* 0 0 (glob)
   + echo babar
@@ -250,7 +250,7 @@
 (duplicate the failing test to get predictable output)
   $ cp test-failure.t test-failure-copy.t
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --jobs 2 test-failure*.t -n
+  $ run-tests.py --with-hg=`which hg` --jobs 2 test-failure*.t -n
   !!
   Failed test-failure*.t: output changed (glob)
   Failed test-failure*.t: output changed (glob)
@@ -262,7 +262,7 @@
   >>> f = open('test-nothing.t', 'w')
   >>> f.write('foo\n' * 1024) and None
   >>> f.write('  $ sleep 1') and None
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --jobs 2 --first
+  $ run-tests.py --with-hg=`which hg` --jobs 2 --first
   
   --- $TESTTMP/test-failure*.t (glob)
   +++ $TESTTMP/test-failure*.t.err (glob)
@@ -292,7 +292,7 @@
 
 Refuse the fix
 
-  $ echo 'n' | $TESTDIR/run-tests.py --with-hg=`which hg` -i
+  $ echo 'n' | run-tests.py --with-hg=`which hg` -i
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -318,7 +318,7 @@
 
 Interactive with custom view
 
-  $ echo 'n' | $TESTDIR/run-tests.py --with-hg=`which hg` -i --view echo
+  $ echo 'n' | run-tests.py --with-hg=`which hg` -i --view echo
   $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob)
   Accept this change? [n]* (glob)
   ERROR: test-failure.t output changed
@@ -330,7 +330,7 @@
 
 View the fix
 
-  $ echo 'y' | $TESTDIR/run-tests.py --with-hg=`which hg` --view echo
+  $ echo 'y' | run-tests.py --with-hg=`which hg` --view echo
   $TESTTMP/test-failure.t $TESTTMP/test-failure.t.err (glob)
   
   ERROR: test-failure.t output changed
@@ -348,7 +348,7 @@
   $ echo "  saved backup bundle to \$TESTTMP/foo.hg (glob)" >> test-failure.t
   $ echo "  $ echo 'saved backup bundle to \$TESTTMP/foo.hg'" >> test-failure.t
   $ echo "  saved backup bundle to \$TESTTMP/*.hg (glob)" >> test-failure.t
-  $ echo 'y' | $TESTDIR/run-tests.py --with-hg=`which hg` -i 2>&1 | \
+  $ echo 'y' | run-tests.py --with-hg=`which hg` -i 2>&1 | \
   >   sed -e 's,(glob)$,&<,g'
   
   --- $TESTTMP/test-failure.t
@@ -386,7 +386,7 @@
 No Diff
 ===============
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --nodiff
+  $ run-tests.py --with-hg=`which hg` --nodiff
   !.
   Failed test-failure.t: output changed
   # Ran 2 tests, 0 skipped, 0 warned, 1 failed.
@@ -396,7 +396,7 @@
 test for --time
 ==================
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t --time
+  $ run-tests.py --with-hg=`which hg` test-success.t --time
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
   # Producing time report
@@ -406,7 +406,7 @@
 test for --time with --job enabled
 ====================================
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-success.t --time --jobs 2
+  $ run-tests.py --with-hg=`which hg` test-success.t --time --jobs 2
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
   # Producing time report
@@ -419,7 +419,7 @@
   >   $ echo xyzzy
   > #require false
   > EOF
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --nodiff
+  $ run-tests.py --with-hg=`which hg` --nodiff
   !.s
   Skipped test-skip.t: skipped
   Failed test-failure.t: output changed
@@ -427,13 +427,13 @@
   python hash seed: * (glob)
   [1]
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --keyword xyzzy
+  $ run-tests.py --with-hg=`which hg` --keyword xyzzy
   .s
   Skipped test-skip.t: skipped
   # Ran 2 tests, 2 skipped, 0 warned, 0 failed.
 
 Skips with xml
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --keyword xyzzy \
+  $ run-tests.py --with-hg=`which hg` --keyword xyzzy \
   >  --xunit=xunit.xml
   .s
   Skipped test-skip.t: skipped
@@ -446,7 +446,7 @@
 
 Missing skips or blacklisted skips don't count as executed:
   $ echo test-failure.t > blacklist
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --blacklist=blacklist \
+  $ run-tests.py --with-hg=`which hg` --blacklist=blacklist \
   >   test-failure.t test-bogus.t
   ss
   Skipped test-bogus.t: Doesn't exist
@@ -458,7 +458,7 @@
 test for --json
 ==================
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` --json
+  $ run-tests.py --with-hg=`which hg` --json
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -508,7 +508,7 @@
 Test that failed test accepted through interactive are properly reported:
 
   $ cp test-failure.t backup
-  $ echo y | $TESTDIR/run-tests.py --with-hg=`which hg` --json -i
+  $ echo y | run-tests.py --with-hg=`which hg` --json -i
   
   --- $TESTTMP/test-failure.t
   +++ $TESTTMP/test-failure.t.err
@@ -560,7 +560,7 @@
   >   foo * \ (glob)
   > EOF
 
-  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-glob-backslash.t
+  $ run-tests.py --with-hg=`which hg` test-glob-backslash.t
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
 
--- a/tests/test-serve.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-serve.t	Mon Jun 08 14:44:30 2015 -0500
@@ -9,7 +9,7 @@
   >    cat hg.pid >> "$DAEMON_PIDS"
   >    echo % errors
   >    cat errors.log
-  >    "$TESTDIR/killdaemons.py" hg.pid
+  >    killdaemons.py hg.pid
   > }
 
   $ hg init test
--- a/tests/test-setdiscovery.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-setdiscovery.t	Mon Jun 08 14:44:30 2015 -0500
@@ -346,7 +346,7 @@
   searching for changes
   e64a39e7da8b
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
   $ cut -d' ' -f6- access.log | grep -v cmd=known # cmd=known uses random sampling
   "GET /?cmd=capabilities HTTP/1.1" 200 -
   "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D513314ca8b3ae4dac8eec56966265b00fcf866db
--- a/tests/test-share.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-share.t	Mon Jun 08 14:44:30 2015 -0500
@@ -99,7 +99,7 @@
 
   $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid
   $ cat hg.pid >> $DAEMON_PIDS
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'raw-file/'
+  $ get-with-headers.py localhost:$HGPORT 'raw-file/'
   200 Script output follows
   
   
@@ -299,5 +299,5 @@
 
 Explicitly kill daemons to let the test exit on Windows
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
--- a/tests/test-static-http.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-static-http.t	Mon Jun 08 14:44:30 2015 -0500
@@ -159,4 +159,4 @@
   $ hg clone static-http://localhost:$HGPORT/notarepo local3
   abort: 'http://localhost:$HGPORT/notarepo' does not appear to be an hg repository!
   [255]
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
--- a/tests/test-subrepo-relative-path.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-subrepo-relative-path.t	Mon Jun 08 14:44:30 2015 -0500
@@ -70,7 +70,7 @@
    source   ../sub
    revision 863c1745b441bd97a8c4a096e87793073f4fb215
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
 subrepo paths with ssh urls
 
--- a/tests/test-symlinks.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-symlinks.t	Mon Jun 08 14:44:30 2015 -0500
@@ -214,13 +214,13 @@
   
   $ hg manifest --debug
   2564acbe54bbbedfbf608479340b359f04597f80 644 @ dangling
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> nothing
 
   $ rm dangling
   $ ln -s void dangling
   $ hg commit -m 'change symlink'
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> void
 
 
@@ -228,7 +228,7 @@
 
   $ rm dangling
   $ ln -s empty dangling
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> empty
 
 
@@ -236,13 +236,13 @@
 
   $ hg revert -r 0 -a
   reverting dangling
-  $ "$TESTDIR/readlink.py" dangling
+  $ readlink.py dangling
   dangling -> nothing
 
 
 backups:
 
-  $ "$TESTDIR/readlink.py" *.orig
+  $ readlink.py *.orig
   dangling.orig -> empty
   $ rm *.orig
   $ hg up -C
@@ -255,7 +255,7 @@
   $ hg st -Cmard
   A dangling2
     dangling
-  $ "$TESTDIR/readlink.py" dangling dangling2
+  $ readlink.py dangling dangling2
   dangling -> void
   dangling2 -> void
 
--- a/tests/test-transplant.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-transplant.t	Mon Jun 08 14:44:30 2015 -0500
@@ -788,5 +788,5 @@
 
 Explicitly kill daemons to let the test exit on Windows
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
--- a/tests/test-treediscovery-legacy.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-treediscovery-legacy.t	Mon Jun 08 14:44:30 2015 -0500
@@ -33,7 +33,7 @@
   >   cat hg.pid >> $DAEMON_PIDS
   > }
   $ tstop() {
-  >   "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >   killdaemons.py $DAEMON_PIDS
   >   cp $HGRCPATH-withcap $HGRCPATH
   > }
 
--- a/tests/test-treediscovery.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-treediscovery.t	Mon Jun 08 14:44:30 2015 -0500
@@ -21,7 +21,7 @@
   >   cat hg.pid >> $DAEMON_PIDS
   > }
   $ tstop() {
-  >   "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  >   killdaemons.py $DAEMON_PIDS
   >   [ "$1" ] && cut -d' ' -f6- access.log && cat errors.log
   >   rm access.log errors.log
   > }
--- a/tests/test-unbundlehash.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-unbundlehash.t	Mon Jun 08 14:44:30 2015 -0500
@@ -41,5 +41,5 @@
 
 Explicitly kill daemons to let the test exit on Windows
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS
 
--- a/tests/test-unified-test.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-unified-test.t	Mon Jun 08 14:44:30 2015 -0500
@@ -88,14 +88,14 @@
 
 testing hghave
 
-  $ "$TESTDIR/hghave" true
-  $ "$TESTDIR/hghave" false
+  $ hghave true
+  $ hghave false
   skipped: missing feature: nail clipper
   [1]
-  $ "$TESTDIR/hghave" no-true
+  $ hghave no-true
   skipped: system supports yak shaving
   [1]
-  $ "$TESTDIR/hghave" no-false
+  $ hghave no-false
 
 Conditional sections based on hghave:
 
--- a/tests/test-verify.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-verify.t	Mon Jun 08 14:44:30 2015 -0500
@@ -103,7 +103,7 @@
 
 test revlog format 0
 
-  $ "$TESTDIR/revlog-formatv0.py"
+  $ revlog-formatv0.py
   $ cd formatv0
   $ hg verify
   repository uses revlog format 0
--- a/tests/test-websub.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-websub.t	Mon Jun 08 14:44:30 2015 -0500
@@ -27,7 +27,7 @@
 
 log
 
-  $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT "rev/tip" | grep bts
+  $ get-with-headers.py localhost:$HGPORT "rev/tip" | grep bts
   <div class="description"><a href="http://bts.example.org/issue123">Issue123</a>: fixed the <i class="x">bug</i>!</div>
 errors
 
--- a/tests/test-wireproto.t	Fri Jun 05 22:53:15 2015 -0400
+++ b/tests/test-wireproto.t	Mon Jun 08 14:44:30 2015 -0500
@@ -114,5 +114,5 @@
 
 Explicitly kill daemons to let the test exit on Windows
 
-  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+  $ killdaemons.py $DAEMON_PIDS