Commit 724eddb0 authored by R. David Murray's avatar R. David Murray

#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.
parent c1cb0bc6
...@@ -30,7 +30,9 @@ correspond to the members of the ``group`` structure (Attribute field below, see ...@@ -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 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 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 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: It defines the following items:
......
...@@ -33,12 +33,16 @@ class GroupDatabaseTestCase(unittest.TestCase): ...@@ -33,12 +33,16 @@ class GroupDatabaseTestCase(unittest.TestCase):
e2 = grp.getgrgid(e.gr_gid) e2 = grp.getgrgid(e.gr_gid)
self.check_value(e2) self.check_value(e2)
self.assertEqual(e2.gr_gid, e.gr_gid) 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) self.check_value(e2)
# There are instances where getgrall() returns group names in # There are instances where getgrall() returns group names in
# lowercase while getgrgid() returns proper casing. # lowercase while getgrgid() returns proper casing.
# Discovered on Ubuntu 5.04 (custom). # 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): def test_errors(self):
self.assertRaises(TypeError, grp.getgrgid) self.assertRaises(TypeError, grp.getgrgid)
......
...@@ -398,6 +398,7 @@ Gerhard Häring ...@@ -398,6 +398,7 @@ Gerhard Häring
Fredrik Håård Fredrik Håård
Mihai Ibanescu Mihai Ibanescu
Lars Immisch Lars Immisch
Bobby Impollonia
Meador Inge Meador Inge
Tony Ingraldi Tony Ingraldi
John Interrante John Interrante
......
...@@ -38,6 +38,13 @@ Library ...@@ -38,6 +38,13 @@ Library
or otherwise not wait for exiting child processes. 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? What's New in Python 3.2 Beta 1?
================================ ================================
......
...@@ -159,7 +159,9 @@ Return the group database entry for the given group name. If\n\ ...@@ -159,7 +159,9 @@ Return the group database entry for the given group name. If\n\
name is not valid, raise KeyError."}, name is not valid, raise KeyError."},
{"getgrall", grp_getgrall, METH_NOARGS, {"getgrall", grp_getgrall, METH_NOARGS,
"getgrall() -> list of tuples\n\ "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 */ {NULL, NULL} /* sentinel */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment