tchaikov opened a new pull request, #225:
URL: https://github.com/apache/cassandra-dtest/pull/225
before this change, we fail the test if repr(e) does *not* match with the
given `matching` regular expression. despite that the tests pass as expected,
this is what we intend to complete with this verification. let's explain this
with a Python REPL session:
```
>>> import re
>>> ex = Exception('foobarhello')
>>> matching = 'foobar'
>>> regex = re.compile(matching)
>>> actual = repr(e)
>>> actual
"Exception('foobarhello')"
>>> regex.match(actual) is None
True
>>> regex.match("c'est la vie") is None
True
```
`repr()` returns a canonical string representation of an object. that's why
it adds "Exception()" around the error message. and, it fails to match with the
the "matching" string. as "Exception('foobarhello')" does not match at the
beginning of this string. but we actually expect the unmatch! in other words,
two negatives make a positive.
to correct this, in this change:
* use str() to stringify the exception, so Python does not include its type
in the output string
* do not check if the return match object is None, but check if it is *not*
None. so the test can fail if the message string in exception does not match.
* include the message string and regular expression in the raised
AssertionError.
* instead of using 're.match()', use 're.search()' for matching the regular
expression with the message extracted from exception, as sometimes, we just
pass a part of message in hope to match with the returned message, even if the
part is not sitting at the beginning of the message, for instance, the full
message looks like: ``` Cannot execute this query as it might involve data
filtering and thus may have unpredictable performance. If you want to execute
this query despite the performance unpredictability, use ALLOW FILTERING' ````
but we just use "use ALLOW FILTERING". so instead of changing all the tests,
update the assert helper.
* do not compile the re. otherwise we only match it for a single time, and
then drop the compiled re on the floor.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]