Simplify multiline matching in functional tests
authorJeremy Stanley <fungi@yuggoth.org>
Sat, 16 Apr 2016 02:06:12 +0000 (02:06 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sat, 16 Apr 2016 04:59:34 +0000 (04:59 +0000)
To ease matching across more complex outputs in functional test
conversations, use compiled expressions with the DOTALL flag so that
the "." wildcard will also match newline characters in the stream.

bin/test

index 37e8100..b23a227 100755 (executable)
--- a/bin/test
+++ b/bin/test
@@ -5,6 +5,7 @@
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
+import re
 import sys
 import telnetlib
 import time
@@ -198,7 +199,7 @@ for test, description in dialogue:
     for conversant, question, answer in test:
         print("luser%s waiting for: %s" % (conversant, question))
         index, match, received = lusers[conversant].expect(
-            [question.encode("utf-8")], 5)
+            [re.compile(question.encode("utf-8"), flags=re.DOTALL)], 5)
         captures[conversant] += received.decode("utf-8")
         try:
             captures[conversant] += lusers[