[PATCH] test-commandserver: use python instead of hg as the executable

Adrian Buehlmann adrian at cadifra.com
Wed Jun 20 16:10:30 CDT 2012


On 2012-06-20 22:26, Matt Mackall wrote:
> On Sun, 2012-06-17 at 11:23 +0200, Adrian Buehlmann wrote:
>> # HG changeset patch
>> # User Adrian Buehlmann <adrian at cadifra.com>
>> # Date 1339924726 -7200
>> # Node ID 20c4d99cc7e96666de519418df51b6d5b7d9fad2
>> # Parent  a0f221f45f846aea982355840c614d6fced41edb
>> test-commandserver: use python instead of hg as the executable
> 
> I'm not thrilled about this approach. We certainly expect "hg" to be
> executable, and it's simply a deferred bug of our Windows build process
> that it doesn't result in something called "hg" you can run.
> 
> (And it's only deferred because the traditional methods of making a
> Python script executable on Windows all have rather large caveats.)
> 
> But I don't think it's a quirk we want to enshrine in the test suite.
> It'd be better if we put a single gross hack in run-tests so that it
> just works. For instance, if no suitable hg is present, building an
> hg.cmd and sticking it in $TMP somewhere, then adding it to the path.
> 
> ps: Wanted: benchmark comparison of startup times for .cmd, exemaker,
> and py2exe variants.
> 

If we are forced to keep (from test-commandserver.py):

4:    cmdline = ['hg', 'serve', '--cmdserver', 'pipe']
5:    if path:
6:        cmdline += ['-R', path]
7:
8:    server = subprocess.Popen(cmdline, stdin=subprocess.PIPE,
9:                              stdout=subprocess.PIPE)

as is, then I don't think it will be possible to use a hg.cmd.

According to

  http://docs.python.org/library/subprocess.html#popen-constructor

subprocess.Popen uses CreateProcess() on Windows, which wants the name
of an exe ('hg' as specified on line 4 of test-commandserver.py).

Then I see no way but providing a hg.exe (i.e. using exemaker or similar).


More information about the Mercurial-devel mailing list