tests/test-commandserver.py
changeset 22569 a763159159c7
parent 22568 78b99149ed8a
child 22570 db497a1ef1c1
--- a/tests/test-commandserver.py	Sun Sep 28 16:05:37 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-import sys, os, cStringIO, re, shutil
-
-sys.path.insert(0, os.path.join(os.environ['TESTDIR'], '..', 'contrib'))
-from hgclient import readchannel, sep, runcommand, check
-
-def unknowncommand(server):
-    server.stdin.write('unknowncommand\n')
-
-def hellomessage(server):
-    ch, data = readchannel(server)
-    # escaping python tests output not supported
-    print '%c, %r' % (ch, re.sub('encoding: [a-zA-Z0-9-]+', 'encoding: ***',
-                                 data))
-
-    # run an arbitrary command to make sure the next thing the server sends
-    # isn't part of the hello message
-    runcommand(server, ['id'])
-
-def checkruncommand(server):
-    # hello block
-    readchannel(server)
-
-    # no args
-    runcommand(server, [])
-
-    # global options
-    runcommand(server, ['id', '--quiet'])
-
-    # make sure global options don't stick through requests
-    runcommand(server, ['id'])
-
-    # --config
-    runcommand(server, ['id', '--config', 'ui.quiet=True'])
-
-    # make sure --config doesn't stick
-    runcommand(server, ['id'])
-
-    # negative return code should be masked
-    runcommand(server, ['id', '-runknown'])
-
-def inputeof(server):
-    readchannel(server)
-    server.stdin.write('runcommand\n')
-    # close stdin while server is waiting for input
-    server.stdin.close()
-
-    # server exits with 1 if the pipe closed while reading the command
-    print 'server exit code =', server.wait()
-
-def serverinput(server):
-    readchannel(server)
-
-    patch = """
-# HG changeset patch
-# User test
-# Date 0 0
-# Node ID c103a3dec114d882c98382d684d8af798d09d857
-# Parent  0000000000000000000000000000000000000000
-1
-
-diff -r 000000000000 -r c103a3dec114 a
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/a	Thu Jan 01 00:00:00 1970 +0000
-@@ -0,0 +1,1 @@
-+1
-"""
-
-    runcommand(server, ['import', '-'], input=cStringIO.StringIO(patch))
-    runcommand(server, ['log'])
-
-def cwd(server):
-    """ check that --cwd doesn't persist between requests """
-    readchannel(server)
-    os.mkdir('foo')
-    f = open('foo/bar', 'wb')
-    f.write('a')
-    f.close()
-    runcommand(server, ['--cwd', 'foo', 'st', 'bar'])
-    runcommand(server, ['st', 'foo/bar'])
-    os.remove('foo/bar')
-
-def localhgrc(server):
-    """ check that local configs for the cached repo aren't inherited when -R
-    is used """
-    readchannel(server)
-
-    # the cached repo local hgrc contains ui.foo=bar, so showconfig should
-    # show it
-    runcommand(server, ['showconfig'], outfilter=sep)
-
-    # but not for this repo
-    runcommand(server, ['init', 'foo'])
-    runcommand(server, ['-R', 'foo', 'showconfig', 'ui', 'defaults'])
-    shutil.rmtree('foo')
-
-def hook(**args):
-    print 'hook talking'
-    print 'now try to read something: %r' % sys.stdin.read()
-
-def hookoutput(server):
-    readchannel(server)
-    runcommand(server, ['--config',
-                        'hooks.pre-identify=python:test-commandserver.hook',
-                        'id'],
-               input=cStringIO.StringIO('some input'))
-
-def outsidechanges(server):
-    readchannel(server)
-    f = open('a', 'ab')
-    f.write('a\n')
-    f.close()
-    runcommand(server, ['status'])
-    os.system('hg ci -Am2')
-    runcommand(server, ['tip'])
-    runcommand(server, ['status'])
-
-def bookmarks(server):
-    readchannel(server)
-    runcommand(server, ['bookmarks'])
-
-    # changes .hg/bookmarks
-    os.system('hg bookmark -i bm1')
-    os.system('hg bookmark -i bm2')
-    runcommand(server, ['bookmarks'])
-
-    # changes .hg/bookmarks.current
-    os.system('hg upd bm1 -q')
-    runcommand(server, ['bookmarks'])
-
-    runcommand(server, ['bookmarks', 'bm3'])
-    f = open('a', 'ab')
-    f.write('a\n')
-    f.close()
-    runcommand(server, ['commit', '-Amm'])
-    runcommand(server, ['bookmarks'])
-
-def tagscache(server):
-    readchannel(server)
-    runcommand(server, ['id', '-t', '-r', '0'])
-    os.system('hg tag -r 0 foo')
-    runcommand(server, ['id', '-t', '-r', '0'])
-
-def setphase(server):
-    readchannel(server)
-    runcommand(server, ['phase', '-r', '.'])
-    os.system('hg phase -r . -p')
-    runcommand(server, ['phase', '-r', '.'])
-
-def rollback(server):
-    readchannel(server)
-    runcommand(server, ['phase', '-r', '.', '-p'])
-    f = open('a', 'ab')
-    f.write('a\n')
-    f.close()
-    runcommand(server, ['commit', '-Am.'])
-    runcommand(server, ['rollback'])
-    runcommand(server, ['phase', '-r', '.'])
-
-def branch(server):
-    readchannel(server)
-    runcommand(server, ['branch'])
-    os.system('hg branch foo')
-    runcommand(server, ['branch'])
-    os.system('hg branch default')
-
-def hgignore(server):
-    readchannel(server)
-    f = open('.hgignore', 'ab')
-    f.write('')
-    f.close()
-    runcommand(server, ['commit', '-Am.'])
-    f = open('ignored-file', 'ab')
-    f.write('')
-    f.close()
-    f = open('.hgignore', 'ab')
-    f.write('ignored-file')
-    f.close()
-    runcommand(server, ['status', '-i', '-u'])
-
-def phasecacheafterstrip(server):
-    readchannel(server)
-
-    # create new head, 5:731265503d86
-    runcommand(server, ['update', '-C', '0'])
-    f = open('a', 'ab')
-    f.write('a\n')
-    f.close()
-    runcommand(server, ['commit', '-Am.', 'a'])
-    runcommand(server, ['log', '-Gq'])
-
-    # make it public; draft marker moves to 4:7966c8e3734d
-    runcommand(server, ['phase', '-p', '.'])
-    # load _phasecache.phaseroots
-    runcommand(server, ['phase', '.'], outfilter=sep)
-
-    # strip 1::4 outside server
-    os.system('hg -q --config extensions.mq= strip 1')
-
-    # shouldn't raise "7966c8e3734d: no node!"
-    runcommand(server, ['branches'])
-
-def obsolete(server):
-    readchannel(server)
-
-    runcommand(server, ['up', 'null'])
-    runcommand(server, ['phase', '-df', 'tip'])
-    cmd = 'hg debugobsolete `hg log -r tip --template {node}`'
-    if os.name == 'nt':
-        cmd = 'sh -c "%s"' % cmd # run in sh, not cmd.exe
-    os.system(cmd)
-    runcommand(server, ['log', '--hidden'])
-    runcommand(server, ['log'])
-
-def mqoutsidechanges(server):
-    readchannel(server)
-
-    # load repo.mq
-    runcommand(server, ['qapplied'])
-    os.system('hg qnew 0.diff')
-    # repo.mq should be invalidated
-    runcommand(server, ['qapplied'])
-
-    runcommand(server, ['qpop', '--all'])
-    os.system('hg qqueue --create foo')
-    # repo.mq should be recreated to point to new queue
-    runcommand(server, ['qqueue', '--active'])
-
-def getpass(server):
-    readchannel(server)
-    runcommand(server, ['debuggetpass', '--config', 'ui.interactive=True'],
-               input=cStringIO.StringIO('1234\n'))
-
-def startwithoutrepo(server):
-    readchannel(server)
-    runcommand(server, ['init', 'repo2'])
-    runcommand(server, ['id', '-R', 'repo2'])
-
-if __name__ == '__main__':
-    os.system('hg init repo')
-    os.chdir('repo')
-
-    check(hellomessage)
-    check(unknowncommand)
-    check(checkruncommand)
-    check(inputeof)
-    check(serverinput)
-    check(cwd)
-
-    hgrc = open('.hg/hgrc', 'a')
-    hgrc.write('[ui]\nfoo=bar\n')
-    hgrc.close()
-    check(localhgrc)
-    check(hookoutput)
-    check(outsidechanges)
-    check(bookmarks)
-    check(tagscache)
-    check(setphase)
-    check(rollback)
-    check(branch)
-    check(hgignore)
-    check(phasecacheafterstrip)
-    obs = open('obs.py', 'w')
-    obs.write('import mercurial.obsolete\nmercurial.obsolete._enabled = True\n')
-    obs.close()
-    hgrc = open('.hg/hgrc', 'a')
-    hgrc.write('[extensions]\nobs=obs.py\n')
-    hgrc.close()
-    check(obsolete)
-    hgrc = open('.hg/hgrc', 'a')
-    hgrc.write('[extensions]\nmq=\n')
-    hgrc.close()
-    check(mqoutsidechanges)
-    dbg = open('dbgui.py', 'w')
-    dbg.write('from mercurial import cmdutil, commands\n'
-              'cmdtable = {}\n'
-              'command = cmdutil.command(cmdtable)\n'
-              '@command("debuggetpass", norepo=True)\n'
-              'def debuggetpass(ui):\n'
-              '    ui.write("%s\\n" % ui.getpass())\n')
-    dbg.close()
-    hgrc = open('.hg/hgrc', 'a')
-    hgrc.write('[extensions]\ndbgui=dbgui.py\n')
-    hgrc.close()
-    check(getpass)
-
-    os.chdir('..')
-    check(hellomessage)
-    check(startwithoutrepo)