File: test_pwd.py

package info (click to toggle)
pypy3 7.0.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 111,848 kB
  • sloc: python: 1,291,746; ansic: 74,281; asm: 5,187; cpp: 3,017; sh: 2,533; makefile: 544; xml: 243; lisp: 45; csh: 21; awk: 4
file content (53 lines) | stat: -rw-r--r-- 1,902 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
import pytest

if os.name != 'posix':
    pytest.skip('pwd module only available on unix')

class AppTestPwd:
    spaceconfig = dict(usemodules=['pwd'])

    def test_getpwuid(self):
        import pwd, sys, re
        raises(KeyError, pwd.getpwuid, -1)
        pw = pwd.getpwuid(0)
        assert pw.pw_name == 'root'
        assert isinstance(pw.pw_passwd, str)
        assert pw.pw_uid == 0
        assert pw.pw_gid == 0
        if sys.platform.startswith('linux'):
            assert pw.pw_dir == '/root'
        else:
            assert pw.pw_dir.startswith('/')
        assert pw.pw_shell.startswith('/')
        assert type(pw.pw_uid) is int
        assert type(pw.pw_gid) is int
        raises(TypeError, pwd.getpwuid)
        raises(TypeError, pwd.getpwuid, 3.14)
        raises(KeyError, pwd.getpwuid, sys.maxsize)
        # -1 is allowed, cast to uid_t
        exc = raises(KeyError, pwd.getpwuid, -1)
        m = re.match('getpwuid\(\): uid not found: ([0-9]+)', exc.value.args[0])
        assert m, exc.value.args[0]
        maxval = int(m.group(1))
        assert maxval >= 2**32 - 1
        # shouldn't overflow
        exc = raises(KeyError, pwd.getpwuid, maxval)
        m = re.match('getpwuid\(\): uid not found: ([0-9]+)', exc.value.args[0])
        assert m, exc.value.args[0]
        # should be out of uid_t range
        for v in [-2, maxval+1, 2**128, -2**128]:
            exc = raises(KeyError, pwd.getpwuid, v)
            assert exc.value.args[0] == 'getpwuid(): uid not found'

    def test_getpwnam(self):
        import pwd
        raises(TypeError, pwd.getpwnam)
        raises(TypeError, pwd.getpwnam, 42)
        raises(KeyError, pwd.getpwnam, '~invalid~')
        assert pwd.getpwnam('root').pw_name == 'root'

    def test_getpwall(self):
        import pwd
        raises(TypeError, pwd.getpwall, 42)
        assert pwd.getpwnam('root') in pwd.getpwall()