(self)
| 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 |
nothing calls this directly
no test coverage detected