Issue #4258:  Use 30-bit digits for Python longs, on 64-bit platforms.
Backport of r70459.
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 128880d..a4554a6 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -332,6 +332,9 @@
         self.assert_(isinstance(sys.executable, basestring))
         self.assertEqual(len(sys.float_info), 11)
         self.assertEqual(sys.float_info.radix, 2)
+        self.assertEqual(len(sys.long_info), 2)
+        self.assert_(sys.long_info.bits_per_digit % 5 == 0)
+        self.assert_(sys.long_info.sizeof_digit >= 1)
         self.assert_(isinstance(sys.hexversion, int))
         self.assert_(isinstance(sys.maxint, int))
         if test.test_support.have_unicode:
@@ -417,6 +420,7 @@
         if hasattr(sys, "gettotalrefcount"):
             self.header += '2P'
             self.vheader += '2P'
+        self.longdigit = sys.long_info.sizeof_digit
         import _testcapi
         self.gc_headsize = _testcapi.SIZEOF_PYGC_HEAD
         self.file = open(test.test_support.TESTFN, 'wb')
@@ -594,11 +598,12 @@
         check(reversed([]), size(h + 'lP'))
         # long
         check(0L, size(vh))
-        check(1L, size(vh) + self.H)
-        check(-1L, size(vh) + self.H)
-        check(32768L, size(vh) + 2*self.H)
-        check(32768L*32768L-1, size(vh) + 2*self.H)
-        check(32768L*32768L, size(vh) + 3*self.H)
+        check(1L, size(vh) + self.longdigit)
+        check(-1L, size(vh) + self.longdigit)
+        PyLong_BASE = 2**sys.long_info.bits_per_digit
+        check(PyLong_BASE, size(vh) + 2*self.longdigit)
+        check(PyLong_BASE**2-1, size(vh) + 2*self.longdigit)
+        check(PyLong_BASE**2, size(vh) + 3*self.longdigit)
         # module
         check(unittest, size(h + 'P'))
         # None