commit 46e472dcf9f463af77a4661379517d7b1ccf4ffc
Author: Kornel Benko <[email protected]>
Date:   Thu May 18 00:03:50 2017 +0200

    keytests: Allow controlfile (used by searchPatterns.pl) to be opened for 
'append'
    
    This allows collecting search strings of multiple tests in one file
---
 development/autotests/hello-world-in.txt |    5 ++-
 development/autotests/keytest.py         |   37 +++++++++++++++++++++--------
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/development/autotests/hello-world-in.txt 
b/development/autotests/hello-world-in.txt
index 80d4e31..dc502e6 100644
--- a/development/autotests/hello-world-in.txt
+++ b/development/autotests/hello-world-in.txt
@@ -51,8 +51,9 @@
 # KD: n
 #   Changes the delay among typed charactes to n milliseconds.
 #
-# CO: <filename>
-#    Open control file for write. This file will contain the search and 
comment strings.
+# CO: [>>] <filename>
+#    Open control file for write (or append if preceeded with '>>').
+#    This file will contain the search and comment strings.
 #    Used only by the script 'searchPatterns.pl' at the end of test
 #
 # CN: <notice>
diff --git a/development/autotests/keytest.py b/development/autotests/keytest.py
index a785709..67bb3ca 100755
--- a/development/autotests/keytest.py
+++ b/development/autotests/keytest.py
@@ -165,20 +165,38 @@ class ControlFile:
 
     def __init__(self):
         self.control = re.compile(r'^(C[ONPRC]):\s*(.*)$')
+        self.fileformat = re.compile(r'^((\>\>?)[,\s]\s*)?([^\s]+)\s*$')
         self.cntrname = None
         self.cntrfile = None
 
     def open(self, filename):
+        if not self.cntrfile is None:
+            self.cntrfile.close()
+            self.cntrfile = None
+            self.cntrname = None
+        m = self.fileformat.match(filename)
+        if m:
+            type = m.group(2)
+            filename = m.group(3)
+            if type == '>>':
+                append = True
+            else:
+                append = False
+        else:
+            append = False
         self.cntrname = filename
-        self.cntrfile = open(filename, 'w')
+        if append:
+            self.cntrfile = open(filename, 'a')
+        else:
+            self.cntrfile = open(filename, 'w')
 
     def close(self):
         if not self.cntrfile is None:
             self.cntrfile.close()
             self.cntrfile = None
             self.cntrname = None
-
-    def addline(self, pat):
+    # make the method below 'private'
+    def __addline(self, pat):
         self.cntrfile.writelines(pat + "\n")
 
     def getfname(self):
@@ -199,11 +217,11 @@ class ControlFile:
                 print("Controlfile not initialized")
             else:
                 if command == "CN":
-                    self.addline("Comment: " + text)
+                    self.__addline("Comment: " + text)
                 elif command == "CP":
-                    self.addline("Simple: " + text)
+                    self.__addline("Simple: " + text)
                 elif command == "CR":
-                    self.addline("Regex: " + text)
+                    self.__addline("Regex: " + text)
                 else:
                     die(1,"Error, Unrecognised Command '" + command + "'")
         return True
@@ -257,7 +275,7 @@ def printresstatus():
 
 def lyx_status_retry(pid):
     resstatus = []
-    if lyx_pid is None:
+    if pid is None:
         print('Pid is None')
         return "dead"
     fname = '/proc/' + pid + '/status'
@@ -667,9 +685,8 @@ while not failed:
             failed = True
         else:
             print("    ------------    Forcing quit of lyx instance: " + 
str(lyx_pid) + "    ------------")
-            # \Ax Enter command line is sometimes blocked
-            # \[Escape] works after this
-            sendKeystringAx("\Ax\[Escape]", lyx_pid)
+            # \[Escape]+ should work as RESET focus to main window
+            sendKeystringAx("\[Escape]\[Escape]\[Escape]\[Escape]", lyx_pid)
             time.sleep(controlkey_delay)
             # now we should be outside any dialog
             # and so the function lyx-quit should work

Reply via email to