From: Serhiy Storchaka Date: Mon, 14 Nov 2016 17:25:56 +0000 (+0200) Subject: Issue #28563: Make plural form selection more lenient and accepting X-Git-Tag: v3.4.6rc1~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ca92ab3d233f8c51d48bc6b70ee93c919b789bf;p=thirdparty%2FPython%2Fcpython.git Issue #28563: Make plural form selection more lenient and accepting non-integer numbers. Django tests depend on this. --- 5ca92ab3d233f8c51d48bc6b70ee93c919b789bf diff --cc Lib/test/test_gettext.py index 7cd84347fd5a,3fbc50d3669e..80b18da02c0c --- a/Lib/test/test_gettext.py +++ b/Lib/test/test_gettext.py @@@ -371,22 -365,18 +371,26 @@@ class PluralFormsTestCase(GettextBaseTe self.assertRaises(ZeroDivisionError, f, 0) def test_plural_number(self): - f = gettext.c2py('1') - self.assertEqual(f(1), 1) - self.assertRaises(ValueError, f, 1.0) - self.assertRaises(ValueError, f, '1') - self.assertRaises(ValueError, f, []) - self.assertRaises(ValueError, f, object()) + f = gettext.c2py('n != 1') + self.assertEqual(f(1), 0) + self.assertEqual(f(2), 1) + self.assertEqual(f(1.0), 0) + self.assertEqual(f(2.0), 1) + self.assertEqual(f(1.1), 1) + self.assertRaises(TypeError, f, '2') + self.assertRaises(TypeError, f, b'2') + self.assertRaises(TypeError, f, []) + self.assertRaises(TypeError, f, object()) +class GNUTranslationParsingTest(GettextBaseTest): + def test_plural_form_error_issue17898(self): + with open(MOFILE, 'wb') as fp: + fp.write(base64.decodebytes(GNU_MO_DATA_ISSUE_17898)) + with open(MOFILE, 'rb') as fp: + # If this runs cleanly, the bug is fixed. + t = gettext.GNUTranslations(fp) + class UnicodeTranslationsTest(GettextBaseTest): def setUp(self):