Пример #1
0
 def test_invalid_types(self):
     for value in ('a', object(), b'rwxrwxrwx', None):
         try:
             Permissions.from_int(value)
             assert False, "Value \"%s\" (type: %s) do not fail" % (value, type(value))
         except TypeError:
             pass
Пример #2
0
    def test_mutated(self):
        perm = Permissions()

        assert perm.to_filemode() == '---------'

        expected_int = 0
        for item in Permission:
            perm.set(item, True)

            expected_int = expected_int | item
            assert perm.to_filemode() == stat.filemode(expected_int)[1:]
Пример #3
0
    def test_mutated(self):
        perm = Permissions()

        assert perm.to_octal() == '0000'

        expected_int = 0
        for item in Permission:
            perm.set(item, True)

            expected_int = expected_int | item
            assert '0o' + perm.to_octal() == self._to_oct(expected_int)
Пример #4
0
    def test_mutated(self):
        perm = Permissions()

        assert perm.to_int() == 0

        expected_int = 0
        for item in Permission:
            perm.set(item, True)

            expected_int = expected_int | item
            assert perm.to_int() == expected_int
Пример #5
0
    def test_valid(self):
        perms = '0 1 2 3 4 5 6 7'.split()

        perms = itertools.product(perms, perms, perms, perms)
        for item in perms:
            item = ''.join(item)
            assert len(item) == 4

            perm = Permissions.from_octal(item)

            assert isinstance(perm, Permissions)
            assert perm.to_octal() == item

            item = item[1:]

            perm = Permissions.from_octal(item)

            assert isinstance(perm, Permissions)
            assert perm.to_octal() == '0' + item
Пример #6
0
    def test_valid(self):
        perms = '0 1 2 3 4 5 6 7'.split()

        perms = itertools.permutations(perms, 4)
        for item in perms:
            item = ''.join(item)
            assert len(item) == 4

            item_int = int(item, 8)

            perm = Permissions.from_int(item_int)

            assert isinstance(perm, Permissions)
            assert perm.to_octal() == item

            item = item[1:]

            perm = Permissions.from_octal(item)

            assert isinstance(perm, Permissions)
            assert perm.to_octal() == '0' + item
Пример #7
0
    def test_valid(self):
        path = tempfile.mkstemp()[1]

        perms = '0 1 2 3 4 5 6 7'.split()
        perms = itertools.permutations(perms, 4)

        try:
            for item in perms:
                item = ''.join(item)
                os.chmod(path, int(item, 8))

                perm = Permissions.from_path(path)
                assert isinstance(perm, Permissions)
                assert perm.to_octal() == item

                path2 = pathlib.Path(path)
                perm = Permissions.from_path(path2)
                assert isinstance(perm, Permissions)
                assert perm.to_octal() == item
        finally:
            os.unlink(path)
Пример #8
0
    def test_bad_input(self):
        perms_org = '0777'
        for i, _ in enumerate(perms_org):
            perms = perms_org[0:i] + 'a' + perms_org[i+1:]
            with pytest.raises(ValueError):
                Permissions.from_octal(perms)

        with pytest.raises(ValueError):
            Permissions.from_octal(perms_org[:-2])

        with pytest.raises(ValueError):
            Permissions.from_octal(perms_org + 'x')

        with pytest.raises(ValueError):
            Permissions.from_octal('')
Пример #9
0
    def test_bad_input(self):
        perms_org = 'rwxrwxrwx'
        for i, _ in enumerate(perms_org):
            perms = perms_org[0:i] + '1' + perms_org[i+1:]
            with pytest.raises(ValueError):
                Permissions.from_filemode(perms)

        with pytest.raises(ValueError):
            Permissions.from_filemode(perms_org[:-1])

        with pytest.raises(ValueError):
            Permissions.from_filemode(perms_org + 'x')

        with pytest.raises(ValueError):
            Permissions.from_filemode('')
Пример #10
0
    def test(self):
        perms = '0 1 2 3 4 5 6 7'.split()
        path = tempfile.mkstemp()[1]

        try:
            perms = itertools.product(perms, perms, perms, perms)
            for item in perms:
                item = ''.join(item)
                assert len(item) == 4

                prm = Permissions.from_octal(item)
                os.lchmod(path, prm)

                assert stat.filemode(os.lstat(path).st_mode)[1:] == prm.to_filemode()
        finally:
            os.unlink(path)
Пример #11
0
    def test_valid(self):
        perms = (
            ('-r', '-w', '-xsS'),
            ('-r', '-w', '-xsS'),
            ('-r', '-w', '-xtT'),
        )

        perms = itertools.product(*perms[0], *perms[1], *perms[2])
        for item in perms:
            item = ''.join(item)
            assert len(item) == 9

            perm = Permissions.from_filemode(item)

            assert isinstance(perm, Permissions)
            assert perm.to_filemode() == item
Пример #12
0
 def test_immutated(self):
     for item in Permission:
         perm = Permissions()
         perm.set(item, True)
         assert perm.to_int() == int(item)
Пример #13
0
 def test_immutated(self):
     for item in Permission:
         perm = Permissions()
         perm.set(item, True)
         assert perm.to_filemode() == stat.filemode(item)[1:]
Пример #14
0
 def test_invalid_types(self):
     for value in (123, object(), b'rwxrwxrwx', True, None):
         with pytest.raises(TypeError):
             Permissions.from_filemode(value)
Пример #15
0
    def test_immutated(self):
        for item in Permission:
            perm = Permissions()
            perm.set(item, True)

            assert '0o' + perm.to_octal() == self._to_oct(item)
Пример #16
0
    def test_non_existed_files(self):
        with pytest.raises(FileNotFoundError):
            Permissions.from_path('/qwe')

        with pytest.raises(FileNotFoundError):
            Permissions.from_path(pathlib.Path('/qwe'))
Пример #17
0
 def test_invalid_types(self):
     for value in ('a', 123, object(), b'rwxrwxrwx', True, None):
         with pytest.raises((TypeError, ValueError)):
             Permissions.from_octal(value)
Пример #18
0
 def test_bad_input(self):
     for value in (int('7777', 8) + 1, ):
         with pytest.raises(ValueError):
             Permissions.from_int(value)