MCPcopy Index your code
hub / github.com/python/cpython / test_parse_keyword_spec

Method test_parse_keyword_spec

Lib/test/test_tools/test_i18n.py:493–528  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

491 self.assertNotIn('#.', data)
492
493 def test_parse_keyword_spec(self):
494 valid = (
495 ('foo', ('foo', {'msgid': 0})),
496 ('foo:1', ('foo', {'msgid': 0})),
497 ('foo:1,2', ('foo', {'msgid': 0, 'msgid_plural': 1})),
498 ('foo:1, 2', ('foo', {'msgid': 0, 'msgid_plural': 1})),
499 ('foo:1,2c', ('foo', {'msgid': 0, 'msgctxt': 1})),
500 ('foo:2c,1', ('foo', {'msgid': 0, 'msgctxt': 1})),
501 ('foo:2c ,1', ('foo', {'msgid': 0, 'msgctxt': 1})),
502 ('foo:1,2,3c', ('foo', {'msgid': 0, 'msgid_plural': 1, 'msgctxt': 2})),
503 ('foo:1, 2, 3c', ('foo', {'msgid': 0, 'msgid_plural': 1, 'msgctxt': 2})),
504 ('foo:3c,1,2', ('foo', {'msgid': 0, 'msgid_plural': 1, 'msgctxt': 2})),
505 )
506 for spec, expected in valid:
507 with self.subTest(spec=spec):
508 self.assertEqual(parse_spec(spec), expected)
509 # test unparse-parse round-trip
510 self.assertEqual(parse_spec(unparse_spec(*expected)), expected)
511
512 invalid = (
513 ('foo:', "Invalid keyword spec 'foo:': missing argument positions"),
514 ('foo:bar', "Invalid keyword spec 'foo:bar': position is not an integer"),
515 ('foo:0', "Invalid keyword spec 'foo:0': argument positions must be strictly positive"),
516 ('foo:-2', "Invalid keyword spec 'foo:-2': argument positions must be strictly positive"),
517 ('foo:1,1', "Invalid keyword spec 'foo:1,1': duplicate positions"),
518 ('foo:1,2,1', "Invalid keyword spec 'foo:1,2,1': duplicate positions"),
519 ('foo:1c,2,1c', "Invalid keyword spec 'foo:1c,2,1c': duplicate positions"),
520 ('foo:1c,2,3c', "Invalid keyword spec 'foo:1c,2,3c': msgctxt can only appear once"),
521 ('foo:1,2,3', "Invalid keyword spec 'foo:1,2,3': too many positions"),
522 ('foo:1c', "Invalid keyword spec 'foo:1c': msgctxt cannot appear without msgid"),
523 )
524 for spec, message in invalid:
525 with self.subTest(spec=spec):
526 with self.assertRaises(ValueError) as cm:
527 parse_spec(spec)
528 self.assertEqual(str(cm.exception), message)
529
530 def test_process_keywords(self):
531 default_keywords = {name: [spec] for name, spec

Callers

nothing calls this directly

Calls 6

parse_specFunction · 0.90
unparse_specFunction · 0.90
strFunction · 0.85
subTestMethod · 0.45
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected