#775964: skip YP/NIS entries instead of failing the test

Also includes doc updates mentioning that these entries may not
be retrievable via getgrnam and getgrgid.

Patch by Bobby Impollonia.
This commit is contained in:
R. David Murray 2010-12-14 16:20:53 +00:00
parent a80f4fb048
commit ec07331eea
5 changed files with 20 additions and 4 deletions

View File

@ -30,7 +30,9 @@ correspond to the members of the ``group`` structure (Attribute field below, see
The gid is an integer, name and password are strings, and the member list is a
list of strings. (Note that most users are not explicitly listed as members of
the group they are in according to the password database. Check both databases
to get complete membership information.)
to get complete membership information. Also note that a ``gr_name`` that
starts with a ``+`` or ``-`` is likely to be a YP/NIS reference and may not be
accessible via :func:`getgrnam` or :func:`getgrgid`.)
It defines the following items:

View File

@ -33,12 +33,16 @@ class GroupDatabaseTestCase(unittest.TestCase):
e2 = grp.getgrgid(e.gr_gid)
self.check_value(e2)
self.assertEqual(e2.gr_gid, e.gr_gid)
e2 = grp.getgrnam(e.gr_name)
name = e.gr_name
if name.startswith('+') or name.startswith('-'):
# NIS-related entry
continue
e2 = grp.getgrnam(name)
self.check_value(e2)
# There are instances where getgrall() returns group names in
# lowercase while getgrgid() returns proper casing.
# Discovered on Ubuntu 5.04 (custom).
self.assertEqual(e2.gr_name.lower(), e.gr_name.lower())
self.assertEqual(e2.gr_name.lower(), name.lower())
def test_errors(self):
self.assertRaises(TypeError, grp.getgrgid)

View File

@ -398,6 +398,7 @@ Gerhard Häring
Fredrik Håård
Mihai Ibanescu
Lars Immisch
Bobby Impollonia
Meador Inge
Tony Ingraldi
John Interrante

View File

@ -38,6 +38,13 @@ Library
or otherwise not wait for exiting child processes.
Tests
-----
- Issue #775964: test_grp now skips YP/NIS entries instead of failing when
encountering them.
What's New in Python 3.2 Beta 1?
================================

View File

@ -159,7 +159,9 @@ Return the group database entry for the given group name. If\n\
name is not valid, raise KeyError."},
{"getgrall", grp_getgrall, METH_NOARGS,
"getgrall() -> list of tuples\n\
Return a list of all available group entries, in arbitrary order."},
Return a list of all available group entries, in arbitrary order.\n\
An entry whose name starts with '+' or '-' represents an instruction\n\
to use YP/NIS and may not be accessible via getgrnam or getgrgid."},
{NULL, NULL} /* sentinel */
};