]> granicus.if.org Git - python/commitdiff
Format bools properly in %d.
authorMartin v. Löwis <martin@v.loewis.de>
Tue, 14 Aug 2007 21:57:32 +0000 (21:57 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Tue, 14 Aug 2007 21:57:32 +0000 (21:57 +0000)
Lib/test/test_bool.py
Objects/stringobject.c

index 7a9022e811811685a2f628113039ef3fc5022c86..bbaea85c63cb7a4509bf22ac08d4b58e2a052154 100644 (file)
@@ -163,6 +163,12 @@ class BoolTest(unittest.TestCase):
         self.assertIs(bool(""), False)
         self.assertIs(bool(), False)
 
+    def test_format(self):
+        self.assertEqual("%d" % False, "0")
+        self.assertEqual("%d" % True, "1")
+        self.assertEqual("%x" % False, "0")
+        self.assertEqual("%x" % True, "1")
+
     def test_hasattr(self):
         self.assertIs(hasattr([], "append"), True)
         self.assertIs(hasattr([], "wobble"), False)
index 7a35974bc204c7e8049d0faac6974cacfd4e343e..b1d711d3f7a33f28ed37c79f8acde41d054fa445 100644 (file)
@@ -4144,11 +4144,14 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type,
                return NULL;
        }
 
-
        switch (type) {
        case 'd':
        case 'u':
-               result = Py_Type(val)->tp_str(val);
+               /* Special-case boolean: we want 0/1 */
+               if (PyBool_Check(val))
+                       result = PyNumber_ToBase(val, 10);
+               else
+                       result = Py_Type(val)->tp_str(val);
                break;
        case 'o':
                numnondigits = 2;