Mercurial > p > roundup > code
view test/test_token.py @ 8215:1b15f635ada1
fix(web) issue2551382 - handle crash in request call in test
due to invalid utf8 with surrogate. Ci reports this failure in the
requests call from the test case:
> string = string.encode(encoding, errors)
E UnicodeEncodeError: 'utf-8' codec can't encode character
'\ud800' in position 48: surrogates not allowed
E Falsifying example:
test_class_url_param_accepting_integer_values(
E self=<test.test_liveserver.FuzzGetUrls
testMethod=test_class_url_param_accepting_integer_values>,
E param='@verbose', # or any other generated value
E value='\ud800',
E )
E Explanation:
E These lines were always and only run by failing
examples:
E
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/site-packages/requests/utils.py:675
E
E You can reproduce this example by temporarily adding
@reproduce_failure('6.122.3', b'AAAAAQDXAA==') as a decorator on your
test case
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 16 Dec 2024 19:19:07 -0500 |
| parents | 9a74dfeb8620 |
| children |
line wrap: on
line source
# # Copyright (c) 2001 Richard Jones # This module is free software, and you may redistribute it and/or modify # under the same terms as Python, so long as this copyright message and # disclaimer are retained in their original form. # # This module is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. import unittest, time from roundup.token_r import token_split class TokenTestCase(unittest.TestCase): def testValid(self): l = token_split('hello world') self.assertEqual(l, ['hello', 'world']) def testIgnoreExtraSpace(self): l = token_split('hello world ') self.assertEqual(l, ['hello', 'world']) def testQuoting(self): l = token_split('"hello world"') self.assertEqual(l, ['hello world']) l = token_split("'hello world'") self.assertEqual(l, ['hello world']) def testEmbedQuote(self): l = token_split(r'Roch\'e Compaan') self.assertEqual(l, ["Roch'e", "Compaan"]) l = token_split('address="1 2 3"') self.assertEqual(l, ['address=1 2 3']) def testEmbedEscapeQuote(self): l = token_split(r'"Roch\'e Compaan"') self.assertEqual(l, ["Roch'e Compaan"]) l = token_split(r'"Roch\"e Compaan"') self.assertEqual(l, ['Roch"e Compaan']) l = token_split(r'sql "COLLATE = \"utf8mb4_unicode_ci\";"') self.assertEqual(l, ["sql", 'COLLATE = "utf8mb4_unicode_ci";']) l = token_split(r'''sql 'COLLATE = "utf8mb4_unicode_ci";' ''') self.assertEqual(l, ["sql", 'COLLATE = "utf8mb4_unicode_ci";']) l = token_split(r'''sql 'COLLATE = \"utf8mb4_unicode_ci\";' ''') self.assertEqual(l, ["sql", 'COLLATE = "utf8mb4_unicode_ci";']) l = token_split(r'''sql 'COLLATE = \'utf8mb4_unicode_ci\';' ''') self.assertEqual(l, ["sql", "COLLATE = 'utf8mb4_unicode_ci';"]) l = token_split(r'''sql 'new\nline\rneed \ttab' ''') self.assertEqual(l, ["sql", "new\nline\rneed \ttab"]) def testEscaping(self): l = token_split('"Roch\'e" Compaan') self.assertEqual(l, ["Roch'e", "Compaan"]) l = token_split(r'hello\ world') self.assertEqual(l, ['hello world']) l = token_split(r'\\') self.assertEqual(l, ['\\']) l = token_split(r'\n') self.assertEqual(l, ['\n']) l = token_split(r'\r') self.assertEqual(l, ['\r']) l = token_split(r'\t') self.assertEqual(l, ['\t']) def testBadQuote(self): self.assertRaises(ValueError, token_split, '"hello world') self.assertRaises(ValueError, token_split, "Roch'e Compaan") # vim: set filetype=python ts=4 sw=4 et si
