]> granicus.if.org Git - python/commitdiff
#775964: skip YP/NIS entries instead of failing the test
authorR. David Murray <rdmurray@bitdance.com>
Tue, 14 Dec 2010 16:20:53 +0000 (16:20 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Tue, 14 Dec 2010 16:20:53 +0000 (16:20 +0000)
Also includes doc updates mentioning that these entries may not
be retrievable via getgrnam and getgrgid.

Patch by Bobby Impollonia.

Doc/library/grp.rst
Lib/test/test_grp.py
Misc/ACKS
Misc/NEWS
Modules/grpmodule.c

index 57f160a96f3d27f67b6c6aec853fd7e87d54fbcf..88821406a33d690ae774321fcc920e9754208f99 100644 (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:
 
index dafd90573669edb41749fa7825bd34bd02aa9357..04a8af6ac9b792de8e4b9387029523f4b72a9daf 100644 (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)
index bc5821d4bf6172d8095175d99c10f1616db3e794..5dfb8da4e6fb2e0f3cfa1b31048657e957df91dd 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -398,6 +398,7 @@ Gerhard Häring
 Fredrik Håård
 Mihai Ibanescu
 Lars Immisch
+Bobby Impollonia
 Meador Inge
 Tony Ingraldi
 John Interrante
index 981b53f49a75e9f11bc57ba6f53f482735e66dd2..2b6c78c11c585491f6592993e9470749740b0bf8 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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?
 ================================
 
index 97a3783bc86c372cf47892074e2f9b1554eae60c..7dfda280c777ad5720996da6e768b3457213da5e 100644 (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 */
 };