##// END OF EJS Templates
py3: almost fix test-trusted.py...
Augie Fackler -
r41388:73ccba60 default
parent child Browse files
Show More
@@ -5,19 +5,34 b''
5 from __future__ import absolute_import, print_function
5 from __future__ import absolute_import, print_function
6
6
7 import os
7 import os
8 import sys
9
8 from mercurial import (
10 from mercurial import (
9 error,
11 error,
12 pycompat,
10 ui as uimod,
13 ui as uimod,
11 util,
14 util,
12 )
15 )
16 from mercurial.utils import stringutil
13
17
14 hgrc = os.environ['HGRCPATH']
18 hgrc = os.environ['HGRCPATH']
15 f = open(hgrc)
19 f = open(hgrc, 'rb')
16 basehgrc = f.read()
20 basehgrc = f.read()
17 f.close()
21 f.close()
18
22
19 def testui(user='foo', group='bar', tusers=(), tgroups=(),
23 def _maybesysstr(v):
20 cuser='foo', cgroup='bar', debug=False, silent=False,
24 if isinstance(v, bytes):
25 return pycompat.sysstr(v)
26 return pycompat.sysstr(stringutil.pprint(v))
27
28 def bprint(*args, **kwargs):
29 print(*[_maybesysstr(a) for a in args],
30 **{k: _maybesysstr(v) for k, v in kwargs.items()})
31 # avoid awkward interleaving with ui object's output
32 sys.stdout.flush()
33
34 def testui(user=b'foo', group=b'bar', tusers=(), tgroups=(),
35 cuser=b'foo', cgroup=b'bar', debug=False, silent=False,
21 report=True):
36 report=True):
22 # user, group => owners of the file
37 # user, group => owners of the file
23 # tusers, tgroups => trusted users/groups
38 # tusers, tgroups => trusted users/groups
@@ -25,17 +40,17 b" def testui(user='foo', group='bar', tuse"
25
40
26 # write a global hgrc with the list of trusted users/groups and
41 # write a global hgrc with the list of trusted users/groups and
27 # some setting so that we can be sure it was read
42 # some setting so that we can be sure it was read
28 f = open(hgrc, 'w')
43 f = open(hgrc, 'wb')
29 f.write(basehgrc)
44 f.write(basehgrc)
30 f.write('\n[paths]\n')
45 f.write(b'\n[paths]\n')
31 f.write('global = /some/path\n\n')
46 f.write(b'global = /some/path\n\n')
32
47
33 if tusers or tgroups:
48 if tusers or tgroups:
34 f.write('[trusted]\n')
49 f.write(b'[trusted]\n')
35 if tusers:
50 if tusers:
36 f.write('users = %s\n' % ', '.join(tusers))
51 f.write(b'users = %s\n' % b', '.join(tusers))
37 if tgroups:
52 if tgroups:
38 f.write('groups = %s\n' % ', '.join(tgroups))
53 f.write(b'groups = %s\n' % b', '.join(tgroups))
39 f.close()
54 f.close()
40
55
41 # override the functions that give names to uids and gids
56 # override the functions that give names to uids and gids
@@ -47,7 +62,7 b" def testui(user='foo', group='bar', tuse"
47
62
48 def groupname(gid=None):
63 def groupname(gid=None):
49 if gid is None:
64 if gid is None:
50 return 'bar'
65 return b'bar'
51 return group
66 return group
52 util.groupname = groupname
67 util.groupname = groupname
53
68
@@ -58,13 +73,14 b" def testui(user='foo', group='bar', tuse"
58 # try to read everything
73 # try to read everything
59 #print '# File belongs to user %s, group %s' % (user, group)
74 #print '# File belongs to user %s, group %s' % (user, group)
60 #print '# trusted users = %s; trusted groups = %s' % (tusers, tgroups)
75 #print '# trusted users = %s; trusted groups = %s' % (tusers, tgroups)
61 kind = ('different', 'same')
76 kind = (b'different', b'same')
62 who = ('', 'user', 'group', 'user and the group')
77 who = (b'', b'user', b'group', b'user and the group')
63 trusted = who[(user in tusers) + 2*(group in tgroups)]
78 trusted = who[(user in tusers) + 2*(group in tgroups)]
64 if trusted:
79 if trusted:
65 trusted = ', but we trust the ' + trusted
80 trusted = b', but we trust the ' + trusted
66 print('# %s user, %s group%s' % (kind[user == cuser], kind[group == cgroup],
81 bprint(b'# %s user, %s group%s' % (kind[user == cuser],
67 trusted))
82 kind[group == cgroup],
83 trusted))
68
84
69 u = uimod.ui.load()
85 u = uimod.ui.load()
70 # disable the configuration registration warning
86 # disable the configuration registration warning
@@ -72,33 +88,33 b" def testui(user='foo', group='bar', tuse"
72 # the purpose of this test is to check the old behavior, not to validate the
88 # the purpose of this test is to check the old behavior, not to validate the
73 # behavior from registered item. so we silent warning related to unregisted
89 # behavior from registered item. so we silent warning related to unregisted
74 # config.
90 # config.
75 u.setconfig('devel', 'warn-config-unknown', False, 'test')
91 u.setconfig(b'devel', b'warn-config-unknown', False, b'test')
76 u.setconfig('devel', 'all-warnings', False, 'test')
92 u.setconfig(b'devel', b'all-warnings', False, b'test')
77 u.setconfig('ui', 'debug', str(bool(debug)))
93 u.setconfig(b'ui', b'debug', pycompat.bytestr(bool(debug)))
78 u.setconfig('ui', 'report_untrusted', str(bool(report)))
94 u.setconfig(b'ui', b'report_untrusted', pycompat.bytestr(bool(report)))
79 u.readconfig('.hg/hgrc')
95 u.readconfig(b'.hg/hgrc')
80 if silent:
96 if silent:
81 return u
97 return u
82 print('trusted')
98 bprint(b'trusted')
83 for name, path in u.configitems('paths'):
99 for name, path in u.configitems(b'paths'):
84 print(' ', name, '=', util.pconvert(path))
100 bprint(b' ', name, b'=', util.pconvert(path))
85 print('untrusted')
101 bprint(b'untrusted')
86 for name, path in u.configitems('paths', untrusted=True):
102 for name, path in u.configitems(b'paths', untrusted=True):
87 print('.', end=' ')
103 bprint(b'.', end=b' ')
88 u.config('paths', name) # warning with debug=True
104 u.config(b'paths', name) # warning with debug=True
89 print('.', end=' ')
105 bprint(b'.', end=b' ')
90 u.config('paths', name, untrusted=True) # no warnings
106 u.config(b'paths', name, untrusted=True) # no warnings
91 print(name, '=', util.pconvert(path))
107 bprint(name, b'=', util.pconvert(path))
92 print()
108 print()
93
109
94 return u
110 return u
95
111
96 os.mkdir('repo')
112 os.mkdir(b'repo')
97 os.chdir('repo')
113 os.chdir(b'repo')
98 os.mkdir('.hg')
114 os.mkdir(b'.hg')
99 f = open('.hg/hgrc', 'w')
115 f = open(b'.hg/hgrc', 'wb')
100 f.write('[paths]\n')
116 f.write(b'[paths]\n')
101 f.write('local = /another/path\n\n')
117 f.write(b'local = /another/path\n\n')
102 f.close()
118 f.close()
103
119
104 #print '# Everything is run by user foo, group bar\n'
120 #print '# Everything is run by user foo, group bar\n'
@@ -106,120 +122,120 b' f.close()'
106 # same user, same group
122 # same user, same group
107 testui()
123 testui()
108 # same user, different group
124 # same user, different group
109 testui(group='def')
125 testui(group=b'def')
110 # different user, same group
126 # different user, same group
111 testui(user='abc')
127 testui(user=b'abc')
112 # ... but we trust the group
128 # ... but we trust the group
113 testui(user='abc', tgroups=['bar'])
129 testui(user=b'abc', tgroups=[b'bar'])
114 # different user, different group
130 # different user, different group
115 testui(user='abc', group='def')
131 testui(user=b'abc', group=b'def')
116 # ... but we trust the user
132 # ... but we trust the user
117 testui(user='abc', group='def', tusers=['abc'])
133 testui(user=b'abc', group=b'def', tusers=[b'abc'])
118 # ... but we trust the group
134 # ... but we trust the group
119 testui(user='abc', group='def', tgroups=['def'])
135 testui(user=b'abc', group=b'def', tgroups=[b'def'])
120 # ... but we trust the user and the group
136 # ... but we trust the user and the group
121 testui(user='abc', group='def', tusers=['abc'], tgroups=['def'])
137 testui(user=b'abc', group=b'def', tusers=[b'abc'], tgroups=[b'def'])
122 # ... but we trust all users
138 # ... but we trust all users
123 print('# we trust all users')
139 bprint(b'# we trust all users')
124 testui(user='abc', group='def', tusers=['*'])
140 testui(user=b'abc', group=b'def', tusers=[b'*'])
125 # ... but we trust all groups
141 # ... but we trust all groups
126 print('# we trust all groups')
142 bprint(b'# we trust all groups')
127 testui(user='abc', group='def', tgroups=['*'])
143 testui(user=b'abc', group=b'def', tgroups=[b'*'])
128 # ... but we trust the whole universe
144 # ... but we trust the whole universe
129 print('# we trust all users and groups')
145 bprint(b'# we trust all users and groups')
130 testui(user='abc', group='def', tusers=['*'], tgroups=['*'])
146 testui(user=b'abc', group=b'def', tusers=[b'*'], tgroups=[b'*'])
131 # ... check that users and groups are in different namespaces
147 # ... check that users and groups are in different namespaces
132 print("# we don't get confused by users and groups with the same name")
148 bprint(b"# we don't get confused by users and groups with the same name")
133 testui(user='abc', group='def', tusers=['def'], tgroups=['abc'])
149 testui(user=b'abc', group=b'def', tusers=[b'def'], tgroups=[b'abc'])
134 # ... lists of user names work
150 # ... lists of user names work
135 print("# list of user names")
151 bprint(b"# list of user names")
136 testui(user='abc', group='def', tusers=['foo', 'xyz', 'abc', 'bleh'],
152 testui(user=b'abc', group=b'def', tusers=[b'foo', b'xyz', b'abc', b'bleh'],
137 tgroups=['bar', 'baz', 'qux'])
153 tgroups=[b'bar', b'baz', b'qux'])
138 # ... lists of group names work
154 # ... lists of group names work
139 print("# list of group names")
155 bprint(b"# list of group names")
140 testui(user='abc', group='def', tusers=['foo', 'xyz', 'bleh'],
156 testui(user=b'abc', group=b'def', tusers=[b'foo', b'xyz', b'bleh'],
141 tgroups=['bar', 'def', 'baz', 'qux'])
157 tgroups=[b'bar', b'def', b'baz', b'qux'])
142
158
143 print("# Can't figure out the name of the user running this process")
159 bprint(b"# Can't figure out the name of the user running this process")
144 testui(user='abc', group='def', cuser=None)
160 testui(user=b'abc', group=b'def', cuser=None)
145
161
146 print("# prints debug warnings")
162 bprint(b"# prints debug warnings")
147 u = testui(user='abc', group='def', cuser='foo', debug=True)
163 u = testui(user=b'abc', group=b'def', cuser=b'foo', debug=True)
148
164
149 print("# report_untrusted enabled without debug hides warnings")
165 bprint(b"# report_untrusted enabled without debug hides warnings")
150 u = testui(user='abc', group='def', cuser='foo', report=False)
166 u = testui(user=b'abc', group=b'def', cuser=b'foo', report=False)
151
167
152 print("# report_untrusted enabled with debug shows warnings")
168 bprint(b"# report_untrusted enabled with debug shows warnings")
153 u = testui(user='abc', group='def', cuser='foo', debug=True, report=False)
169 u = testui(user=b'abc', group=b'def', cuser=b'foo', debug=True, report=False)
154
170
155 print("# ui.readconfig sections")
171 bprint(b"# ui.readconfig sections")
156 filename = 'foobar'
172 filename = b'foobar'
157 f = open(filename, 'w')
173 f = open(filename, 'wb')
158 f.write('[foobar]\n')
174 f.write(b'[foobar]\n')
159 f.write('baz = quux\n')
175 f.write(b'baz = quux\n')
160 f.close()
176 f.close()
161 u.readconfig(filename, sections=['foobar'])
177 u.readconfig(filename, sections=[b'foobar'])
162 print(u.config('foobar', 'baz'))
178 bprint(u.config(b'foobar', b'baz'))
163
179
164 print()
180 print()
165 print("# read trusted, untrusted, new ui, trusted")
181 bprint(b"# read trusted, untrusted, new ui, trusted")
166 u = uimod.ui.load()
182 u = uimod.ui.load()
167 # disable the configuration registration warning
183 # disable the configuration registration warning
168 #
184 #
169 # the purpose of this test is to check the old behavior, not to validate the
185 # the purpose of this test is to check the old behavior, not to validate the
170 # behavior from registered item. so we silent warning related to unregisted
186 # behavior from registered item. so we silent warning related to unregisted
171 # config.
187 # config.
172 u.setconfig('devel', 'warn-config-unknown', False, 'test')
188 u.setconfig(b'devel', b'warn-config-unknown', False, b'test')
173 u.setconfig('devel', 'all-warnings', False, 'test')
189 u.setconfig(b'devel', b'all-warnings', False, b'test')
174 u.setconfig('ui', 'debug', 'on')
190 u.setconfig(b'ui', b'debug', b'on')
175 u.readconfig(filename)
191 u.readconfig(filename)
176 u2 = u.copy()
192 u2 = u.copy()
177 def username(uid=None):
193 def username(uid=None):
178 return 'foo'
194 return b'foo'
179 util.username = username
195 util.username = username
180 u2.readconfig('.hg/hgrc')
196 u2.readconfig(b'.hg/hgrc')
181 print('trusted:')
197 bprint(b'trusted:')
182 print(u2.config('foobar', 'baz'))
198 bprint(u2.config(b'foobar', b'baz'))
183 print('untrusted:')
199 bprint(b'untrusted:')
184 print(u2.config('foobar', 'baz', untrusted=True))
200 bprint(u2.config(b'foobar', b'baz', untrusted=True))
185
201
186 print()
202 print()
187 print("# error handling")
203 bprint(b"# error handling")
188
204
189 def assertraises(f, exc=error.Abort):
205 def assertraises(f, exc=error.Abort):
190 try:
206 try:
191 f()
207 f()
192 except exc as inst:
208 except exc as inst:
193 print('raised', inst.__class__.__name__)
209 bprint(b'raised', inst.__class__.__name__)
194 else:
210 else:
195 print('no exception?!')
211 bprint(b'no exception?!')
196
212
197 print("# file doesn't exist")
213 bprint(b"# file doesn't exist")
198 os.unlink('.hg/hgrc')
214 os.unlink(b'.hg/hgrc')
199 assert not os.path.exists('.hg/hgrc')
215 assert not os.path.exists(b'.hg/hgrc')
200 testui(debug=True, silent=True)
216 testui(debug=True, silent=True)
201 testui(user='abc', group='def', debug=True, silent=True)
217 testui(user=b'abc', group=b'def', debug=True, silent=True)
202
218
203 print()
219 print()
204 print("# parse error")
220 bprint(b"# parse error")
205 f = open('.hg/hgrc', 'w')
221 f = open(b'.hg/hgrc', 'wb')
206 f.write('foo')
222 f.write(b'foo')
207 f.close()
223 f.close()
208
224
209 try:
225 try:
210 testui(user='abc', group='def', silent=True)
226 testui(user=b'abc', group=b'def', silent=True)
211 except error.ParseError as inst:
227 except error.ParseError as inst:
212 print(inst)
228 bprint(inst)
213
229
214 try:
230 try:
215 testui(debug=True, silent=True)
231 testui(debug=True, silent=True)
216 except error.ParseError as inst:
232 except error.ParseError as inst:
217 print(inst)
233 bprint(inst)
218
234
219 print()
235 print()
220 print('# access typed information')
236 bprint(b'# access typed information')
221 with open('.hg/hgrc', 'w') as f:
237 with open(b'.hg/hgrc', 'wb') as f:
222 f.write('''\
238 f.write(b'''\
223 [foo]
239 [foo]
224 sub=main
240 sub=main
225 sub:one=one
241 sub:one=one
@@ -230,32 +246,33 b' int=42'
230 bytes=81mb
246 bytes=81mb
231 list=spam,ham,eggs
247 list=spam,ham,eggs
232 ''')
248 ''')
233 u = testui(user='abc', group='def', cuser='foo', silent=True)
249 u = testui(user=b'abc', group=b'def', cuser=b'foo', silent=True)
234 def configpath(section, name, default=None, untrusted=False):
250 def configpath(section, name, default=None, untrusted=False):
235 path = u.configpath(section, name, default, untrusted)
251 path = u.configpath(section, name, default, untrusted)
236 if path is None:
252 if path is None:
237 return None
253 return None
238 return util.pconvert(path)
254 return util.pconvert(path)
239
255
240 print('# suboptions, trusted and untrusted')
256 bprint(b'# suboptions, trusted and untrusted')
241 trusted = u.configsuboptions('foo', 'sub')
257 trusted = u.configsuboptions(b'foo', b'sub')
242 untrusted = u.configsuboptions('foo', 'sub', untrusted=True)
258 untrusted = u.configsuboptions(b'foo', b'sub', untrusted=True)
243 print(
259 bprint(
244 (trusted[0], sorted(trusted[1].items())),
260 (trusted[0], sorted(trusted[1].items())),
245 (untrusted[0], sorted(untrusted[1].items())))
261 (untrusted[0], sorted(untrusted[1].items())))
246 print('# path, trusted and untrusted')
262 bprint(b'# path, trusted and untrusted')
247 print(configpath('foo', 'path'), configpath('foo', 'path', untrusted=True))
263 bprint(configpath(b'foo', b'path'), configpath(b'foo', b'path', untrusted=True))
248 print('# bool, trusted and untrusted')
264 bprint(b'# bool, trusted and untrusted')
249 print(u.configbool('foo', 'bool'), u.configbool('foo', 'bool', untrusted=True))
265 bprint(u.configbool(b'foo', b'bool'),
250 print('# int, trusted and untrusted')
266 u.configbool(b'foo', b'bool', untrusted=True))
251 print(
267 bprint(b'# int, trusted and untrusted')
252 u.configint('foo', 'int', 0),
268 bprint(
253 u.configint('foo', 'int', 0, untrusted=True))
269 u.configint(b'foo', b'int', 0),
254 print('# bytes, trusted and untrusted')
270 u.configint(b'foo', b'int', 0, untrusted=True))
255 print(
271 bprint(b'# bytes, trusted and untrusted')
256 u.configbytes('foo', 'bytes', 0),
272 bprint(
257 u.configbytes('foo', 'bytes', 0, untrusted=True))
273 u.configbytes(b'foo', b'bytes', 0),
258 print('# list, trusted and untrusted')
274 u.configbytes(b'foo', b'bytes', 0, untrusted=True))
259 print(
275 bprint(b'# list, trusted and untrusted')
260 u.configlist('foo', 'list', []),
276 bprint(
261 u.configlist('foo', 'list', [], untrusted=True))
277 u.configlist(b'foo', b'list', []),
278 u.configlist(b'foo', b'list', [], untrusted=True))
@@ -174,9 +174,9 b' quux'
174 # parse error
174 # parse error
175 # different user, different group
175 # different user, different group
176 not trusting file .hg/hgrc from untrusted user abc, group def
176 not trusting file .hg/hgrc from untrusted user abc, group def
177 ('foo', '.hg/hgrc:1')
177 ParseError('foo', '.hg/hgrc:1')
178 # same user, same group
178 # same user, same group
179 ('foo', '.hg/hgrc:1')
179 ParseError('foo', '.hg/hgrc:1')
180
180
181 # access typed information
181 # access typed information
182 # different user, different group
182 # different user, different group
General Comments 0
You need to be logged in to leave comments. Login now