Mercurial > p > roundup > code
annotate test/cmp_helper.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 | 19bd4b413ed6 |
| children |
| rev | line source |
|---|---|
|
5513
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
1 class StringFragmentCmpHelper: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
2 def compareStringFragments(self, s, fragments): |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
3 """Compare a string agains a list of fragments where a tuple denotes a |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
4 set of alternatives |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
5 """ |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
6 pos = 0 |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
7 for frag in fragments: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
8 if type(frag) != tuple: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
9 self.assertEqual(s[pos:pos + len(frag)], frag) |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
10 pos += len(frag) |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
11 else: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
12 found = False |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
13 for alt in frag: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
14 if s[pos:pos + len(alt)] == alt: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
15 pos += len(alt) |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
16 found = True |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
17 break |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
18 |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
19 if not found: |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
20 l = max(map(len, frag)) |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
21 raise AssertionError('%s != %s' % |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
22 (repr(s[pos:pos + l]), str(frag))) |
|
19bd4b413ed6
be more lenient when comparing string results
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
23 self.assertEqual(s[pos:], '') |
