--- a/tests/test-trusted.py Sat Oct 05 10:29:34 2019 -0400
+++ b/tests/test-trusted.py Sun Oct 06 09:45:02 2019 -0400
@@ -20,20 +20,33 @@
basehgrc = f.read()
f.close()
+
def _maybesysstr(v):
if isinstance(v, bytes):
return pycompat.sysstr(v)
return pycompat.sysstr(stringutil.pprint(v))
+
def bprint(*args, **kwargs):
- print(*[_maybesysstr(a) for a in args],
- **{k: _maybesysstr(v) for k, v in kwargs.items()})
+ print(
+ *[_maybesysstr(a) for a in args],
+ **{k: _maybesysstr(v) for k, v in kwargs.items()}
+ )
# avoid awkward interleaving with ui object's output
sys.stdout.flush()
-def testui(user=b'foo', group=b'bar', tusers=(), tgroups=(),
- cuser=b'foo', cgroup=b'bar', debug=False, silent=False,
- report=True):
+
+def testui(
+ user=b'foo',
+ group=b'bar',
+ tusers=(),
+ tgroups=(),
+ cuser=b'foo',
+ cgroup=b'bar',
+ debug=False,
+ silent=False,
+ report=True,
+):
# user, group => owners of the file
# tusers, tgroups => trusted users/groups
# cuser, cgroup => user/group of the current process
@@ -58,29 +71,33 @@
if uid is None:
return cuser
return user
+
util.username = username
def groupname(gid=None):
if gid is None:
return b'bar'
return group
+
util.groupname = groupname
def isowner(st):
return user == cuser
+
util.isowner = isowner
# try to read everything
- #print '# File belongs to user %s, group %s' % (user, group)
- #print '# trusted users = %s; trusted groups = %s' % (tusers, tgroups)
+ # print '# File belongs to user %s, group %s' % (user, group)
+ # print '# trusted users = %s; trusted groups = %s' % (tusers, tgroups)
kind = (b'different', b'same')
who = (b'', b'user', b'group', b'user and the group')
- trusted = who[(user in tusers) + 2*(group in tgroups)]
+ trusted = who[(user in tusers) + 2 * (group in tgroups)]
if trusted:
trusted = b', but we trust the ' + trusted
- bprint(b'# %s user, %s group%s' % (kind[user == cuser],
- kind[group == cgroup],
- trusted))
+ bprint(
+ b'# %s user, %s group%s'
+ % (kind[user == cuser], kind[group == cgroup], trusted)
+ )
u = uimod.ui.load()
# disable the configuration registration warning
@@ -101,14 +118,15 @@
bprint(b'untrusted')
for name, path in u.configitems(b'paths', untrusted=True):
bprint(b'.', end=b' ')
- u.config(b'paths', name) # warning with debug=True
+ u.config(b'paths', name) # warning with debug=True
bprint(b'.', end=b' ')
- u.config(b'paths', name, untrusted=True) # no warnings
+ u.config(b'paths', name, untrusted=True) # no warnings
bprint(name, b'=', util.pconvert(path))
print()
return u
+
os.mkdir(b'repo')
os.chdir(b'repo')
os.mkdir(b'.hg')
@@ -117,7 +135,7 @@
f.write(b'local = /another/path\n\n')
f.close()
-#print '# Everything is run by user foo, group bar\n'
+# print '# Everything is run by user foo, group bar\n'
# same user, same group
testui()
@@ -149,12 +167,20 @@
testui(user=b'abc', group=b'def', tusers=[b'def'], tgroups=[b'abc'])
# ... lists of user names work
bprint(b"# list of user names")
-testui(user=b'abc', group=b'def', tusers=[b'foo', b'xyz', b'abc', b'bleh'],
- tgroups=[b'bar', b'baz', b'qux'])
+testui(
+ user=b'abc',
+ group=b'def',
+ tusers=[b'foo', b'xyz', b'abc', b'bleh'],
+ tgroups=[b'bar', b'baz', b'qux'],
+)
# ... lists of group names work
bprint(b"# list of group names")
-testui(user=b'abc', group=b'def', tusers=[b'foo', b'xyz', b'bleh'],
- tgroups=[b'bar', b'def', b'baz', b'qux'])
+testui(
+ user=b'abc',
+ group=b'def',
+ tusers=[b'foo', b'xyz', b'bleh'],
+ tgroups=[b'bar', b'def', b'baz', b'qux'],
+)
bprint(b"# Can't figure out the name of the user running this process")
testui(user=b'abc', group=b'def', cuser=None)
@@ -190,8 +216,12 @@
u.setconfig(b'ui', b'debug', b'on')
u.readconfig(filename)
u2 = u.copy()
+
+
def username(uid=None):
return b'foo'
+
+
util.username = username
u2.readconfig(b'.hg/hgrc')
bprint(b'trusted:')
@@ -202,6 +232,7 @@
print()
bprint(b"# error handling")
+
def assertraises(f, exc=error.Abort):
try:
f()
@@ -210,6 +241,7 @@
else:
bprint(b'no exception?!')
+
bprint(b"# file doesn't exist")
os.unlink(b'.hg/hgrc')
assert not os.path.exists(b'.hg/hgrc')
@@ -232,6 +264,7 @@
return error.ParseError(*args)
+
try:
testui(user=b'abc', group=b'def', silent=True)
except error.ParseError as inst:
@@ -245,7 +278,8 @@
print()
bprint(b'# access typed information')
with open(b'.hg/hgrc', 'wb') as f:
- f.write(b'''\
+ f.write(
+ b'''\
[foo]
sub=main
sub:one=one
@@ -255,34 +289,43 @@
int=42
bytes=81mb
list=spam,ham,eggs
-''')
+'''
+ )
u = testui(user=b'abc', group=b'def', cuser=b'foo', silent=True)
+
+
def configpath(section, name, default=None, untrusted=False):
path = u.configpath(section, name, default, untrusted)
if path is None:
return None
return util.pconvert(path)
+
bprint(b'# suboptions, trusted and untrusted')
trusted = u.configsuboptions(b'foo', b'sub')
untrusted = u.configsuboptions(b'foo', b'sub', untrusted=True)
bprint(
(trusted[0], sorted(trusted[1].items())),
- (untrusted[0], sorted(untrusted[1].items())))
+ (untrusted[0], sorted(untrusted[1].items())),
+)
bprint(b'# path, trusted and untrusted')
bprint(configpath(b'foo', b'path'), configpath(b'foo', b'path', untrusted=True))
bprint(b'# bool, trusted and untrusted')
-bprint(u.configbool(b'foo', b'bool'),
- u.configbool(b'foo', b'bool', untrusted=True))
+bprint(
+ u.configbool(b'foo', b'bool'), u.configbool(b'foo', b'bool', untrusted=True)
+)
bprint(b'# int, trusted and untrusted')
bprint(
u.configint(b'foo', b'int', 0),
- u.configint(b'foo', b'int', 0, untrusted=True))
+ u.configint(b'foo', b'int', 0, untrusted=True),
+)
bprint(b'# bytes, trusted and untrusted')
bprint(
u.configbytes(b'foo', b'bytes', 0),
- u.configbytes(b'foo', b'bytes', 0, untrusted=True))
+ u.configbytes(b'foo', b'bytes', 0, untrusted=True),
+)
bprint(b'# list, trusted and untrusted')
bprint(
u.configlist(b'foo', b'list', []),
- u.configlist(b'foo', b'list', [], untrusted=True))
+ u.configlist(b'foo', b'list', [], untrusted=True),
+)