tests/test-trusted.py
author Martin von Zweigbergk <martinvonz@google.com>
Fri, 27 Dec 2019 22:40:52 -0800
changeset 44044 f3ad014b6a53
parent 43076 2372284d9457
child 45888 c9b14c56fc2b
permissions -rw-r--r--
tests: avoid grafting the same change over and over The test case added in a1381eea7c7d (graft: do not use `.remove` on a smart set (regression), 2014-04-28) added a test case that grafted the same change (renaming 'a' to 'b') three times over. It had description "graft works on complex revset", but AFACT, all that it cared about was that some ancestor of the working copy was in the set of revisions to graft. So this patch changes the test to do that instead. (I plan to later make it so that grafting these renames on top of each won't create the empty commits they currently create.) Differential Revision: https://phab.mercurial-scm.org/D7804
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     1
# Since it's not easy to write a test that portably deals
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     2
# with files from different users/groups, we cheat a bit by
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     3
# monkey-patching some functions in the util module
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     4
28934
c4040a35b5d9 tests: make test-trusted use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28913
diff changeset
     5
from __future__ import absolute_import, print_function
28913
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
     6
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     7
import os
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
     8
import sys
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
     9
28913
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
    10
from mercurial import (
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
    11
    error,
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    12
    pycompat,
28913
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
    13
    ui as uimod,
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
    14
    util,
b4048ce003fb tests: make test-trusted use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 26587
diff changeset
    15
)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    16
from mercurial.utils import stringutil
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    17
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    18
hgrc = os.environ['HGRCPATH']
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    19
f = open(hgrc, 'rb')
5523
5db730475d6d tests/*: avoid losing the original settings from $HGRCPATH
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4516
diff changeset
    20
basehgrc = f.read()
5db730475d6d tests/*: avoid losing the original settings from $HGRCPATH
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4516
diff changeset
    21
f.close()
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    22
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    23
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    24
def _maybesysstr(v):
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    25
    if isinstance(v, bytes):
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    26
        return pycompat.sysstr(v)
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    27
    return pycompat.sysstr(stringutil.pprint(v))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    28
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    29
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    30
def bprint(*args, **kwargs):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    31
    print(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    32
        *[_maybesysstr(a) for a in args],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    33
        **{k: _maybesysstr(v) for k, v in kwargs.items()}
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    34
    )
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    35
    # avoid awkward interleaving with ui object's output
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    36
    sys.stdout.flush()
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    38
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    39
def testui(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    40
    user=b'foo',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    41
    group=b'bar',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    42
    tusers=(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    43
    tgroups=(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    44
    cuser=b'foo',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    45
    cgroup=b'bar',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    46
    debug=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    47
    silent=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    48
    report=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    49
):
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    50
    # user, group => owners of the file
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    51
    # tusers, tgroups => trusted users/groups
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    52
    # cuser, cgroup => user/group of the current process
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    53
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    54
    # write a global hgrc with the list of trusted users/groups and
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    55
    # some setting so that we can be sure it was read
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    56
    f = open(hgrc, 'wb')
5523
5db730475d6d tests/*: avoid losing the original settings from $HGRCPATH
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 4516
diff changeset
    57
    f.write(basehgrc)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    58
    f.write(b'\n[paths]\n')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    59
    f.write(b'global = /some/path\n\n')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    60
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    61
    if tusers or tgroups:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    62
        f.write(b'[trusted]\n')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    63
        if tusers:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    64
            f.write(b'users = %s\n' % b', '.join(tusers))
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    65
        if tgroups:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    66
            f.write(b'groups = %s\n' % b', '.join(tgroups))
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    67
    f.close()
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    68
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    69
    # override the functions that give names to uids and gids
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    70
    def username(uid=None):
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    71
        if uid is None:
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    72
            return cuser
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    73
        return user
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    74
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    75
    util.username = username
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    76
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    77
    def groupname(gid=None):
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    78
        if gid is None:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    79
            return b'bar'
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    80
        return group
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    81
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    82
    util.groupname = groupname
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    83
8657
3fa92c618624 posix: do not use fstat in isowner
Martin Geisler <mg@lazybytes.net>
parents: 8190
diff changeset
    84
    def isowner(st):
3677
1a0fa3914c46 Avoid looking up usernames if the current user owns the .hgrc file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3552
diff changeset
    85
        return user == cuser
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    86
3677
1a0fa3914c46 Avoid looking up usernames if the current user owns the .hgrc file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3552
diff changeset
    87
    util.isowner = isowner
1a0fa3914c46 Avoid looking up usernames if the current user owns the .hgrc file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3552
diff changeset
    88
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    89
    # try to read everything
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    90
    # print '# File belongs to user %s, group %s' % (user, group)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    91
    # print '# trusted users = %s; trusted groups = %s' % (tusers, tgroups)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    92
    kind = (b'different', b'same')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    93
    who = (b'', b'user', b'group', b'user and the group')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    94
    trusted = who[(user in tusers) + 2 * (group in tgroups)]
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    95
    if trusted:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
    96
        trusted = b', but we trust the ' + trusted
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    97
    bprint(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    98
        b'# %s user, %s group%s'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
    99
        % (kind[user == cuser], kind[group == cgroup], trusted)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   100
    )
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   101
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28934
diff changeset
   102
    u = uimod.ui.load()
34858
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   103
    # disable the configuration registration warning
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   104
    #
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   105
    # the purpose of this test is to check the old behavior, not to validate the
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   106
    # behavior from registered item. so we silent warning related to unregisted
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   107
    # config.
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   108
    u.setconfig(b'devel', b'warn-config-unknown', False, b'test')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   109
    u.setconfig(b'devel', b'all-warnings', False, b'test')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   110
    u.setconfig(b'ui', b'debug', pycompat.bytestr(bool(debug)))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   111
    u.setconfig(b'ui', b'report_untrusted', pycompat.bytestr(bool(report)))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   112
    u.readconfig(b'.hg/hgrc')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   113
    if silent:
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   114
        return u
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   115
    bprint(b'trusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   116
    for name, path in u.configitems(b'paths'):
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   117
        bprint(b'   ', name, b'=', util.pconvert(path))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   118
    bprint(b'untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   119
    for name, path in u.configitems(b'paths', untrusted=True):
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   120
        bprint(b'.', end=b' ')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   121
        u.config(b'paths', name)  # warning with debug=True
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   122
        bprint(b'.', end=b' ')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   123
        u.config(b'paths', name, untrusted=True)  # no warnings
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   124
        bprint(name, b'=', util.pconvert(path))
28934
c4040a35b5d9 tests: make test-trusted use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28913
diff changeset
   125
    print()
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   126
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   127
    return u
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   128
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   129
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   130
os.mkdir(b'repo')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   131
os.chdir(b'repo')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   132
os.mkdir(b'.hg')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   133
f = open(b'.hg/hgrc', 'wb')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   134
f.write(b'[paths]\n')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   135
f.write(b'local = /another/path\n\n')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   136
f.close()
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   137
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   138
# print '# Everything is run by user foo, group bar\n'
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   139
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   140
# same user, same group
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   141
testui()
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   142
# same user, different group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   143
testui(group=b'def')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   144
# different user, same group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   145
testui(user=b'abc')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   146
# ... but we trust the group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   147
testui(user=b'abc', tgroups=[b'bar'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   148
# different user, different group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   149
testui(user=b'abc', group=b'def')
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   150
# ... but we trust the user
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   151
testui(user=b'abc', group=b'def', tusers=[b'abc'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   152
# ... but we trust the group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   153
testui(user=b'abc', group=b'def', tgroups=[b'def'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   154
# ... but we trust the user and the group
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   155
testui(user=b'abc', group=b'def', tusers=[b'abc'], tgroups=[b'def'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   156
# ... but we trust all users
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   157
bprint(b'# we trust all users')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   158
testui(user=b'abc', group=b'def', tusers=[b'*'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   159
# ... but we trust all groups
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   160
bprint(b'# we trust all groups')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   161
testui(user=b'abc', group=b'def', tgroups=[b'*'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   162
# ... but we trust the whole universe
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   163
bprint(b'# we trust all users and groups')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   164
testui(user=b'abc', group=b'def', tusers=[b'*'], tgroups=[b'*'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   165
# ... check that users and groups are in different namespaces
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   166
bprint(b"# we don't get confused by users and groups with the same name")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   167
testui(user=b'abc', group=b'def', tusers=[b'def'], tgroups=[b'abc'])
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   168
# ... lists of user names work
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   169
bprint(b"# list of user names")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   170
testui(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   171
    user=b'abc',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   172
    group=b'def',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   173
    tusers=[b'foo', b'xyz', b'abc', b'bleh'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   174
    tgroups=[b'bar', b'baz', b'qux'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   175
)
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   176
# ... lists of group names work
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   177
bprint(b"# list of group names")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   178
testui(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   179
    user=b'abc',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   180
    group=b'def',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   181
    tusers=[b'foo', b'xyz', b'bleh'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   182
    tgroups=[b'bar', b'def', b'baz', b'qux'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   183
)
3551
3b07e223534b Only read .hg/hgrc files from trusted users/groups
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   184
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   185
bprint(b"# Can't figure out the name of the user running this process")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   186
testui(user=b'abc', group=b'def', cuser=None)
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   187
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   188
bprint(b"# prints debug warnings")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   189
u = testui(user=b'abc', group=b'def', cuser=b'foo', debug=True)
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   190
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   191
bprint(b"# report_untrusted enabled without debug hides warnings")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   192
u = testui(user=b'abc', group=b'def', cuser=b'foo', report=False)
13493
95b0d4c1c9e1 ui: always report untrusted hgrc files when debug enabled
Ry4an Brase <ry4an-hg@ry4an.org>
parents: 11291
diff changeset
   193
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   194
bprint(b"# report_untrusted enabled with debug shows warnings")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   195
u = testui(user=b'abc', group=b'def', cuser=b'foo', debug=True, report=False)
13493
95b0d4c1c9e1 ui: always report untrusted hgrc files when debug enabled
Ry4an Brase <ry4an-hg@ry4an.org>
parents: 11291
diff changeset
   196
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   197
bprint(b"# ui.readconfig sections")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   198
filename = b'foobar'
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   199
f = open(filename, 'wb')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   200
f.write(b'[foobar]\n')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   201
f.write(b'baz = quux\n')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   202
f.close()
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   203
u.readconfig(filename, sections=[b'foobar'])
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   204
bprint(u.config(b'foobar', b'baz'))
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   205
28934
c4040a35b5d9 tests: make test-trusted use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28913
diff changeset
   206
print()
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   207
bprint(b"# read trusted, untrusted, new ui, trusted")
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28934
diff changeset
   208
u = uimod.ui.load()
34858
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   209
# disable the configuration registration warning
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   210
#
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   211
# the purpose of this test is to check the old behavior, not to validate the
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   212
# behavior from registered item. so we silent warning related to unregisted
85a2db47ad50 configitems: adds a developer warning when accessing undeclared configuration
Boris Feld <boris.feld@octobus.net>
parents: 31857
diff changeset
   213
# config.
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   214
u.setconfig(b'devel', b'warn-config-unknown', False, b'test')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   215
u.setconfig(b'devel', b'all-warnings', False, b'test')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   216
u.setconfig(b'ui', b'debug', b'on')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   217
u.readconfig(filename)
8190
9b8ac5fb7760 ui: kill most users of parentui name and arg, replace with .copy()
Matt Mackall <mpm@selenic.com>
parents: 8144
diff changeset
   218
u2 = u.copy()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   219
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   220
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   221
def username(uid=None):
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   222
    return b'foo'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   223
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   224
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   225
util.username = username
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   226
u2.readconfig(b'.hg/hgrc')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   227
bprint(b'trusted:')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   228
bprint(u2.config(b'foobar', b'baz'))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   229
bprint(b'untrusted:')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   230
bprint(u2.config(b'foobar', b'baz', untrusted=True))
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   231
28934
c4040a35b5d9 tests: make test-trusted use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28913
diff changeset
   232
print()
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   233
bprint(b"# error handling")
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   234
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   235
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 25660
diff changeset
   236
def assertraises(f, exc=error.Abort):
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   237
    try:
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   238
        f()
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 19872
diff changeset
   239
    except exc as inst:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   240
        bprint(b'raised', inst.__class__.__name__)
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   241
    else:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   242
        bprint(b'no exception?!')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   243
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   244
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   245
bprint(b"# file doesn't exist")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   246
os.unlink(b'.hg/hgrc')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   247
assert not os.path.exists(b'.hg/hgrc')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   248
testui(debug=True, silent=True)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   249
testui(user=b'abc', group=b'def', debug=True, silent=True)
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   250
28934
c4040a35b5d9 tests: make test-trusted use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28913
diff changeset
   251
print()
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   252
bprint(b"# parse error")
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   253
f = open(b'.hg/hgrc', 'wb')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   254
f.write(b'foo')
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   255
f.close()
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   256
41497
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   257
# This is a hack to remove b'' prefixes from ParseError.__bytes__ on
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   258
# Python 3.
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   259
def normalizeparseerror(e):
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   260
    if pycompat.ispy3:
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   261
        args = [a.decode('utf-8') for a in e.args]
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   262
    else:
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   263
        args = e.args
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   264
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   265
    return error.ParseError(*args)
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   266
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   267
8144
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 8142
diff changeset
   268
try:
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   269
    testui(user=b'abc', group=b'def', silent=True)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 19872
diff changeset
   270
except error.ParseError as inst:
41497
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   271
    bprint(normalizeparseerror(inst))
3552
9b52239dc740 save settings from untrusted config files in a separate configparser
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3551
diff changeset
   272
8144
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 8142
diff changeset
   273
try:
fca54469480e ui: introduce new config parser
Matt Mackall <mpm@selenic.com>
parents: 8142
diff changeset
   274
    testui(debug=True, silent=True)
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 19872
diff changeset
   275
except error.ParseError as inst:
41497
3028b4073be1 tests: convert ParseError arguments to str on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41352
diff changeset
   276
    bprint(normalizeparseerror(inst))
31472
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   277
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   278
print()
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   279
bprint(b'# access typed information')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   280
with open(b'.hg/hgrc', 'wb') as f:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   281
    f.write(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   282
        b'''\
31472
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   283
[foo]
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   284
sub=main
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   285
sub:one=one
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   286
sub:two=two
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   287
path=monty/python
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   288
bool=true
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   289
int=42
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   290
bytes=81mb
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   291
list=spam,ham,eggs
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   292
'''
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   293
    )
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   294
u = testui(user=b'abc', group=b'def', cuser=b'foo', silent=True)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   295
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   296
31857
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   297
def configpath(section, name, default=None, untrusted=False):
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   298
    path = u.configpath(section, name, default, untrusted)
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   299
    if path is None:
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   300
        return None
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   301
    return util.pconvert(path)
08fbc97d1364 tests: print Unix style paths in *.py tests
Matt Harbison <matt_harbison@yahoo.com>
parents: 31472
diff changeset
   302
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   303
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   304
bprint(b'# suboptions, trusted and untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   305
trusted = u.configsuboptions(b'foo', b'sub')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   306
untrusted = u.configsuboptions(b'foo', b'sub', untrusted=True)
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   307
bprint(
31472
75e4bae56068 config: honour the trusted flag in ui.configbytes
Martijn Pieters <mjpieters@fb.com>
parents: 30559
diff changeset
   308
    (trusted[0], sorted(trusted[1].items())),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   309
    (untrusted[0], sorted(untrusted[1].items())),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   310
)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   311
bprint(b'# path, trusted and untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   312
bprint(configpath(b'foo', b'path'), configpath(b'foo', b'path', untrusted=True))
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   313
bprint(b'# bool, trusted and untrusted')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   314
bprint(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   315
    u.configbool(b'foo', b'bool'), u.configbool(b'foo', b'bool', untrusted=True)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   316
)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   317
bprint(b'# int, trusted and untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   318
bprint(
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   319
    u.configint(b'foo', b'int', 0),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   320
    u.configint(b'foo', b'int', 0, untrusted=True),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   321
)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   322
bprint(b'# bytes, trusted and untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   323
bprint(
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   324
    u.configbytes(b'foo', b'bytes', 0),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   325
    u.configbytes(b'foo', b'bytes', 0, untrusted=True),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   326
)
41352
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   327
bprint(b'# list, trusted and untrusted')
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   328
bprint(
73ccba60aaa1 py3: almost fix test-trusted.py
Augie Fackler <augie@google.com>
parents: 34858
diff changeset
   329
    u.configlist(b'foo', b'list', []),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   330
    u.configlist(b'foo', b'list', [], untrusted=True),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41497
diff changeset
   331
)