diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 39ccb27..3d67abd 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -282,6 +282,23 @@
                                   struct.pack, self.format,
                                   NotAnInt)
 
+                # Objects with an '__index__' method should be allowed
+                # to pack as integers.
+                class Indexable(object):
+                    def __init__(self, value):
+                        self._value = value
+
+                    def __index__(self):
+                        return self._value
+
+                for obj in (Indexable(0), Indexable(10), Indexable(17),
+                            Indexable(42), Indexable(100), Indexable(127)):
+                    try:
+                        struct.pack(format, obj)
+                    except:
+                        self.fail("integer code pack failed on object "
+                                  "with '__index__' method")
+
         for code in integer_codes:
             for byteorder in byteorders:
                 if (byteorder in ('', '@') and code in ('q', 'Q') and
