annotate tests/test-commandserver.py @ 16853:7863ff383894

help: format command and option list help using RST This patch changes the function which generates help text about commands and options to use RST formatting. Tables describing options have been formatted using RST table markup for some time already, so their appearance does not change. Command lists, however, change appearance. To format non-verbose command lists, RST field list markup was chosen, because it resembles the old format: <http://docutils.sourceforge.net/docs/user/rst/quickref.html#field-lists> In the old (hand-coded) format of non-verbose command lists, the left column is 12 characters wide. Our minirst implementation formats field lists with a left column 14 characters wide, so this patch changes the appearance of help output correspondingly: <http://markmail.org/message/krl4cxopsnii7s6z?q=mercurial+reinert+from:%22Olav+Reinert%22&page=2> The minirst markup most closely resembling the old verbose command lists is definition lists. But using it would cause a blank line to be inserted between each command definition, making the output excessively long, and no more useful than before. To avoid this, I chose to use field lists also for verbose command help, resulting in output like this example: add add the specified files on the next commit annotate, blame show changeset information by line for each file clone make a copy of an existing repository commit, ci commit the specified files or all outstanding changes diff diff repository (or selected files) export dump the header and diffs for one or more changesets forget forget the specified files on the next commit init create a new repository in the given directory log, history show revision history of entire repository or files merge merge working directory with another revision phase set or show the current phase name pull pull changes from the specified source push push changes to the specified destination qdiff diff of the current patch and subsequent modifications qinit init a new queue repository (DEPRECATED) qnew create a new patch qpop pop the current patch off the stack qpush push the next patch onto the stack qrefresh update the current patch remove, rm remove the specified files on the next commit serve start stand-alone webserver status, st show changed files in the working directory summary, sum summarize working directory state update, up, checkout, co update working directory (or switch revisions) This change is a move towards generating all help text as a list of strings marked up with RST.
author Olav Reinert <seroton10@gmail.com>
date Sat, 02 Jun 2012 11:25:40 +0200
parents e34106fa0dc3
children 1c8e0d6ac3b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14882
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
1 import sys, os, struct, subprocess, cStringIO, re, shutil
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
2
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
3 def connect(path=None):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
4 cmdline = ['hg', 'serve', '--cmdserver', 'pipe']
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
5 if path:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
6 cmdline += ['-R', path]
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
7
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
8 server = subprocess.Popen(cmdline, stdin=subprocess.PIPE,
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
9 stdout=subprocess.PIPE)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
10
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
11 return server
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
12
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
13 def writeblock(server, data):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
14 server.stdin.write(struct.pack('>I', len(data)))
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
15 server.stdin.write(data)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
16 server.stdin.flush()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
17
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
18 def readchannel(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
19 data = server.stdout.read(5)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
20 if not data:
16687
e34106fa0dc3 cleanup: "raise SomeException()" -> "raise SomeException"
Brodie Rao <brodie@sf.io>
parents: 16683
diff changeset
21 raise EOFError
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
22 channel, length = struct.unpack('>cI', data)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
23 if channel in 'IL':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
24 return channel, length
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
25 else:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
26 return channel, server.stdout.read(length)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
27
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
28 def runcommand(server, args, output=sys.stdout, error=sys.stderr, input=None):
15541
3aee6e26b28b tests: make test-commandserver.py output readable
Mads Kiilerich <mads@kiilerich.com>
parents: 14939
diff changeset
29 print ' runcommand', ' '.join(args)
16117
6ecf5fb2a475 test-commandserver: flush stdout
Idan Kamara <idankk86@gmail.com>
parents: 16116
diff changeset
30 sys.stdout.flush()
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
31 server.stdin.write('runcommand\n')
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
32 writeblock(server, '\0'.join(args))
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
33
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
34 if not input:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
35 input = cStringIO.StringIO()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
36
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
37 while True:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
38 ch, data = readchannel(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
39 if ch == 'o':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
40 output.write(data)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
41 output.flush()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
42 elif ch == 'e':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
43 error.write(data)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
44 error.flush()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
45 elif ch == 'I':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
46 writeblock(server, input.read(data))
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
47 elif ch == 'L':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
48 writeblock(server, input.readline(data))
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
49 elif ch == 'r':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
50 return struct.unpack('>i', data)[0]
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
51 else:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
52 print "unexpected channel %c: %r" % (ch, data)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
53 if ch.isupper():
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
54 return
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
55
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
56 def check(func, repopath=None):
15541
3aee6e26b28b tests: make test-commandserver.py output readable
Mads Kiilerich <mads@kiilerich.com>
parents: 14939
diff changeset
57 print
3aee6e26b28b tests: make test-commandserver.py output readable
Mads Kiilerich <mads@kiilerich.com>
parents: 14939
diff changeset
58 print 'testing %s:' % func.__name__
3aee6e26b28b tests: make test-commandserver.py output readable
Mads Kiilerich <mads@kiilerich.com>
parents: 14939
diff changeset
59 print
16117
6ecf5fb2a475 test-commandserver: flush stdout
Idan Kamara <idankk86@gmail.com>
parents: 16116
diff changeset
60 sys.stdout.flush()
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
61 server = connect(repopath)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
62 try:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
63 return func(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
64 finally:
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
65 server.stdin.close()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
66 server.wait()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
67
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
68 def unknowncommand(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
69 server.stdin.write('unknowncommand\n')
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
70
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
71 def hellomessage(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
72 ch, data = readchannel(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
73 # escaping python tests output not supported
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
74 print '%c, %r' % (ch, re.sub('encoding: [a-zA-Z0-9-]+', 'encoding: ***',
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
75 data))
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
76
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
77 # run an arbitrary command to make sure the next thing the server sends
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
78 # isn't part of the hello message
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
79 runcommand(server, ['id'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
80
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
81 def checkruncommand(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
82 # hello block
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
83 readchannel(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
84
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
85 # no args
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
86 runcommand(server, [])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
87
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
88 # global options
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
89 runcommand(server, ['id', '--quiet'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
90
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
91 # make sure global options don't stick through requests
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
92 runcommand(server, ['id'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
93
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
94 # --config
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
95 runcommand(server, ['id', '--config', 'ui.quiet=True'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
96
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
97 # make sure --config doesn't stick
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
98 runcommand(server, ['id'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
99
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
100 def inputeof(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
101 readchannel(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
102 server.stdin.write('runcommand\n')
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
103 # close stdin while server is waiting for input
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
104 server.stdin.close()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
105
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
106 # server exits with 1 if the pipe closed while reading the command
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
107 print 'server exit code =', server.wait()
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
108
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
109 def serverinput(server):
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
110 readchannel(server)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
111
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
112 patch = """
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
113 # HG changeset patch
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
114 # User test
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
115 # Date 0 0
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
116 # Node ID c103a3dec114d882c98382d684d8af798d09d857
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
117 # Parent 0000000000000000000000000000000000000000
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
118 1
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
119
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
120 diff -r 000000000000 -r c103a3dec114 a
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
121 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
122 +++ b/a Thu Jan 01 00:00:00 1970 +0000
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
123 @@ -0,0 +1,1 @@
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
124 +1
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
125 """
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
126
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
127 runcommand(server, ['import', '-'], input=cStringIO.StringIO(patch))
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
128 runcommand(server, ['log'])
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
129
14864
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
130 def cwd(server):
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
131 """ check that --cwd doesn't persist between requests """
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
132 readchannel(server)
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
133 os.mkdir('foo')
15542
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
134 f = open('foo/bar', 'wb')
14880
5233df79deed test-commandserver: explicitly close opened file
Idan Kamara <idankk86@gmail.com>
parents: 14864
diff changeset
135 f.write('a')
5233df79deed test-commandserver: explicitly close opened file
Idan Kamara <idankk86@gmail.com>
parents: 14864
diff changeset
136 f.close()
14864
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
137 runcommand(server, ['--cwd', 'foo', 'st', 'bar'])
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
138 runcommand(server, ['st', 'foo/bar'])
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
139 os.remove('foo/bar')
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
140
14882
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
141 def localhgrc(server):
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
142 """ check that local configs for the cached repo aren't inherited when -R
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
143 is used """
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
144 readchannel(server)
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
145
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
146 # the cached repo local hgrc contains ui.foo=bar, so showconfig should
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
147 # show it
14882
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
148 runcommand(server, ['showconfig'])
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
149
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
150 # but not for this repo
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
151 runcommand(server, ['init', 'foo'])
15542
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
152 runcommand(server, ['-R', 'foo', 'showconfig', 'ui', 'defaults'])
14882
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
153 shutil.rmtree('foo')
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
154
14889
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
155 def hook(**args):
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
156 print 'hook talking'
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
157 print 'now try to read something: %r' % sys.stdin.read()
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
158
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
159 def hookoutput(server):
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
160 readchannel(server)
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
161 runcommand(server, ['--config',
16683
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
162 'hooks.pre-identify=python:test-commandserver.hook',
525fdb738975 cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 16202
diff changeset
163 'id'],
14889
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
164 input=cStringIO.StringIO('some input'))
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
165
14939
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
166 def outsidechanges(server):
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
167 readchannel(server)
15542
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
168 f = open('a', 'ab')
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
169 f.write('a\n')
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
170 f.close()
16114
acfca07a8f26 cmdserver: invalidate the dirstate when running commands (issue3271)
Idan Kamara <idankk86@gmail.com>
parents: 15989
diff changeset
171 runcommand(server, ['status'])
15542
e19302598df8 tests: make test-commandserver.py independent of line ending and slash direction
Mads Kiilerich <mads@kiilerich.com>
parents: 15541
diff changeset
172 os.system('hg ci -Am2')
14939
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
173 runcommand(server, ['tip'])
16114
acfca07a8f26 cmdserver: invalidate the dirstate when running commands (issue3271)
Idan Kamara <idankk86@gmail.com>
parents: 15989
diff changeset
174 runcommand(server, ['status'])
14939
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
175
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
176 def bookmarks(server):
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
177 readchannel(server)
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
178 runcommand(server, ['bookmarks'])
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
179
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
180 # changes .hg/bookmarks
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
181 os.system('hg bookmark -i bm1')
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
182 os.system('hg bookmark -i bm2')
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
183 runcommand(server, ['bookmarks'])
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
184
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
185 # changes .hg/bookmarks.current
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
186 os.system('hg upd bm1 -q')
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
187 runcommand(server, ['bookmarks'])
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
188
16115
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
189 runcommand(server, ['bookmarks', 'bm3'])
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
190 f = open('a', 'ab')
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
191 f.write('a\n')
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
192 f.close()
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
193 runcommand(server, ['commit', '-Amm'])
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
194 runcommand(server, ['bookmarks'])
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 16114
diff changeset
195
14939
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
196 def tagscache(server):
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
197 readchannel(server)
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
198 runcommand(server, ['id', '-t', '-r', '0'])
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
199 os.system('hg tag -r 0 foo')
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
200 runcommand(server, ['id', '-t', '-r', '0'])
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
201
15989
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
202 def setphase(server):
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
203 readchannel(server)
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
204 runcommand(server, ['phase', '-r', '.'])
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
205 os.system('hg phase -r . -p')
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
206 runcommand(server, ['phase', '-r', '.'])
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
207
16116
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
208 def rollback(server):
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
209 readchannel(server)
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
210 runcommand(server, ['phase', '-r', '.', '-p'])
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
211 f = open('a', 'ab')
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
212 f.write('a\n')
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
213 f.close()
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
214 runcommand(server, ['commit', '-Am.'])
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
215 runcommand(server, ['rollback'])
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
216 runcommand(server, ['phase', '-r', '.'])
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
217
16201
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
218 def branch(server):
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
219 readchannel(server)
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
220 runcommand(server, ['branch'])
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
221 os.system('hg branch foo')
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
222 runcommand(server, ['branch'])
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
223 os.system('hg branch default')
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
224
16202
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
225 def hgignore(server):
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
226 readchannel(server)
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
227 f = open('.hgignore', 'ab')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
228 f.write('')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
229 f.close()
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
230 runcommand(server, ['commit', '-Am.'])
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
231 f = open('ignored-file', 'ab')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
232 f.write('')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
233 f.close()
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
234 f = open('.hgignore', 'ab')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
235 f.write('ignored-file')
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
236 f.close()
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
237 runcommand(server, ['status', '-i', '-u'])
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
238
14770
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
239 if __name__ == '__main__':
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
240 os.system('hg init')
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
241
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
242 check(hellomessage)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
243 check(unknowncommand)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
244 check(checkruncommand)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
245 check(inputeof)
95a8c0f5dd3f tests: add basic commandserver test
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
246 check(serverinput)
14864
1b872599f39f cmdserver: restore old working dir after dispatch when we have --cwd
Idan Kamara <idankk86@gmail.com>
parents: 14770
diff changeset
247 check(cwd)
14882
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
248
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
249 hgrc = open('.hg/hgrc', 'a')
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
250 hgrc.write('[ui]\nfoo=bar\n')
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
251 hgrc.close()
bb2cffe81a94 cmdserver: take repo.baseui as our ui
Idan Kamara <idankk86@gmail.com>
parents: 14880
diff changeset
252 check(localhgrc)
14889
a59058fd074a hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
Idan Kamara <idankk86@gmail.com>
parents: 14882
diff changeset
253 check(hookoutput)
14939
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
254 check(outsidechanges)
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
255 check(bookmarks)
b4c06b97dfe0 cmdserver: repo.invalidate() on every runcommand
Idan Kamara <idankk86@gmail.com>
parents: 14889
diff changeset
256 check(tagscache)
15989
6548a2e32285 test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com>
parents: 15542
diff changeset
257 check(setphase)
16116
ce0ad184f489 localrepo: clear _filecache on rollback (issue3261)
Idan Kamara <idankk86@gmail.com>
parents: 16115
diff changeset
258 check(rollback)
16201
fb7c4c14223f dirstate: filecacheify _branch
Idan Kamara <idankk86@gmail.com>
parents: 16117
diff changeset
259 check(branch)
16202
53e2cd303ecf dirstate: filecacheify _ignore (issue3278)
Idan Kamara <idankk86@gmail.com>
parents: 16201
diff changeset
260 check(hgignore)