uitest/mass-testing/calc.py | 161 +++++++++++++++++++++-------------------- uitest/mass-testing/impress.py | 13 +-- uitest/mass-testing/run.py | 42 +++++++--- uitest/mass-testing/writer.py | 13 +-- 4 files changed, 124 insertions(+), 105 deletions(-)
New commits: commit f9be4795bac37d177402f49a7f2de7daf9b764d0 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 23 19:02:14 2019 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 23 19:02:14 2019 +0200 mass-uitesting: thread not loaded files as skipped diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py index 65bbc1d..40d88c6 100755 --- a/uitest/mass-testing/run.py +++ b/uitest/mass-testing/run.py @@ -126,12 +126,17 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume): fileInterval = 10 testIternval = 20 timeout = time.time() + fileInterval + notLoaded = True while True: time.sleep(1) if time.time() > timeout: - logger.info("TIMEOUT: " + fileName) - results['timeout'] += 1 + if notLoaded: + logger.info("SKIP: " + fileName) + results['skip'] += 1 + else: + logger.info("TIMEOUT: " + fileName) + results['timeout'] += 1 # kill popen process os.killpg(process.pid, signal.SIGKILL) @@ -164,6 +169,8 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume): break elif message == 'loaded': + notLoaded = False + #Extend timeout timeout += testIternval commit 77efd108d283951e7bc8ec3bb2ecb519fa7b3c57 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 23 18:49:32 2019 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 23 18:49:32 2019 +0200 mass-uitesting: Make sure the sheet is not protected... ... while changing text formatting diff --git a/uitest/mass-testing/calc.py b/uitest/mass-testing/calc.py index 58d532d..f1ac576 100755 --- a/uitest/mass-testing/calc.py +++ b/uitest/mass-testing/calc.py @@ -148,47 +148,55 @@ class massTesting(UITestCase): def test_change_text_formatting_and_undo(self): xEdit = self.load_file() if xEdit: - self.xUITest.executeCommand(".uno:SelectAll") - self.xUITest.executeCommand(".uno:Bold") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Italic") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Underline") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:UnderlineDouble") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Strikeout") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Overline") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:SuperScript") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:SubScript") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Shadowed") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:OutlineFont") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Grow") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:Shrink") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseToUpper") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseToLower") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseRotateCase") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseToSentenceCase") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseToTitleCase") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:ChangeCaseToToggleCase") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:SmallCaps") - self.xUITest.executeCommand(".uno:Undo") - self.xUITest.executeCommand(".uno:StyleApply?Style:string=Heading%202&FamilyName:string=ParagraphStyles") - self.xUITest.executeCommand(".uno:Undo") + document = self.ui_test.get_component() + nrSheets = document.Sheets.getCount() #number of sheets in the document + + #go to first sheet + for i in range(nrSheets - 1): + self.xUITest.executeCommand(".uno:JumpToPrevTable") + + if not document.Sheets[0].isProtected(): + self.xUITest.executeCommand(".uno:SelectAll") + self.xUITest.executeCommand(".uno:Bold") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Italic") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Underline") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:UnderlineDouble") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Strikeout") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Overline") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:SuperScript") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:SubScript") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Shadowed") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:OutlineFont") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Grow") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:Shrink") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseToUpper") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseToLower") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseRotateCase") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseToSentenceCase") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseToTitleCase") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:ChangeCaseToToggleCase") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:SmallCaps") + self.xUITest.executeCommand(".uno:Undo") + self.xUITest.executeCommand(".uno:StyleApply?Style:string=Heading%202&FamilyName:string=ParagraphStyles") + self.xUITest.executeCommand(".uno:Undo") self.ui_test.close_doc() # vim: set shiftwidth=4 softtabstop=4 expandtab: commit 7051847eb83b9dfa7976c72c0dd441613312fe36 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 23 18:39:31 2019 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 23 18:39:31 2019 +0200 mass-uitesting: kill the process earlier if the document... ... can't be loaded. Sometimes it hangs or a popup is prompted. bail out earlier so we can save some time diff --git a/uitest/mass-testing/calc.py b/uitest/mass-testing/calc.py index dc19af8..58d532d 100755 --- a/uitest/mass-testing/calc.py +++ b/uitest/mass-testing/calc.py @@ -10,12 +10,6 @@ from uitest.framework import UITestCase from libreoffice.uno.propertyvalue import mkPropertyValues import time - -def handle_skip(): - #Kill the process so we don't have to open the same file for each test - print("skipped") - os.killpg(os.getpid(), signal.SIGINT) - class massTesting(UITestCase): def load_file(self): @@ -28,16 +22,21 @@ class massTesting(UITestCase): self.ui_test.load_file(fileName) document = self.ui_test.get_component() + # Ignore read-only or protected files if not hasattr(document, 'isReadonly') or document.isReadonly() or document.isProtected(): - handle_skip() + print("mass-uitesting:skipped", flush=True) + return try: xDoc = self.xUITest.getTopFocusWindow() xEdit = xDoc.getChild("grid_window") except: #In case the mimetype is wrong and the file is open with another component - handle_skip() + print("mass-uitesting:skipped", flush=True) + return + + print("mass-uitesting:loaded", flush=True) return xEdit diff --git a/uitest/mass-testing/impress.py b/uitest/mass-testing/impress.py index f2797b2..cb63fe0 100755 --- a/uitest/mass-testing/impress.py +++ b/uitest/mass-testing/impress.py @@ -9,11 +9,6 @@ from uitest.framework import UITestCase from libreoffice.uno.propertyvalue import mkPropertyValues import time -def handle_skip(): - #Kill the process so we don't have to open the same file for each test - print("skipped") - os.killpg(os.getpid(), signal.SIGINT) - class massTesting(UITestCase): def load_file(self): @@ -28,7 +23,8 @@ class massTesting(UITestCase): # Ignore read-only files if not hasattr(document, 'isReadonly') or document.isReadonly(): - handle_skip() + print("mass-uitesting:skipped", flush=True) + return # Go to the normal view self.xUITest.executeCommand(".uno:NormalMultiPaneGUI") @@ -38,7 +34,10 @@ class massTesting(UITestCase): xEdit = xDoc.getChild("impress_win") except: #In case the mimetype is wrong and the file is open with another component - handle_skip() + print("mass-uitesting:skipped", flush=True) + return + + print("mass-uitesting:loaded", flush=True) return xEdit diff --git a/uitest/mass-testing/run.py b/uitest/mass-testing/run.py index 20bb101..65bbc1d 100755 --- a/uitest/mass-testing/run.py +++ b/uitest/mass-testing/run.py @@ -120,9 +120,12 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume): # Do not block on process.stdout fcntl.fcntl(process.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK) - # Kill the process if the test can't be executed in 'timeoutTime' seconds - timeoutTime = 20 - timeout = time.time() + timeoutTime + # Kill the process if: + # 1. The file can't be loaded in 'fielInterval' seconds + # 2. The test can't be executed in 'testInterval' seconds + fileInterval = 10 + testIternval = 20 + timeout = time.time() + fileInterval while True: time.sleep(1) @@ -136,7 +139,6 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume): try: outputLines = process.stdout.readlines() - except IOError: pass @@ -151,17 +153,22 @@ def run_tests_and_get_results(liboPath, listFiles, isDebug, isResume): if isDebug: print(line) - if 'skipped' == line.lower(): - logger.info("SKIP: " + fileName + " : " + importantInfo) - results['skip'] += 1 - break + if line.startswith("mass-uitesting:"): + message = line.split(":")[1] + if message == 'skipped': + logger.info("SKIP: " + fileName + " : " + importantInfo) + results['skip'] += 1 - if 'Execution time' in line: + # kill popen process + os.killpg(process.pid, signal.SIGKILL) - importantInfo = line.split('for ')[1] + break + elif message == 'loaded': + #Extend timeout + timeout += testIternval - #Extend timeout - timeout = time.time() + timeoutTime + elif 'Execution time' in line: + importantInfo = line.split('for ')[1] elif importantInfo and 'error' == line.lower() or 'fail' == line.lower(): isFailure = True diff --git a/uitest/mass-testing/writer.py b/uitest/mass-testing/writer.py index cbf27b6..563bc8c 100755 --- a/uitest/mass-testing/writer.py +++ b/uitest/mass-testing/writer.py @@ -10,11 +10,6 @@ from uitest.framework import UITestCase from libreoffice.uno.propertyvalue import mkPropertyValues import time -def handle_skip(): - #Kill the process so we don't have to open the same file for each test - print("skipped") - os.killpg(os.getpid(), signal.SIGINT) - class massTesting(UITestCase): def load_file(self): @@ -29,14 +24,18 @@ class massTesting(UITestCase): # Ignore read-only files if not hasattr(document, 'isReadonly') or document.isReadonly(): - handle_skip() + print("mass-uitesting:skipped", flush=True) + return try: xDoc = self.xUITest.getTopFocusWindow() xEdit = xDoc.getChild("writer_edit") except: #In case the mimetype is wrong and the file is open with another component - handle_skip() + print("mass-uitesting:skipped", flush=True) + return + + print("mass-uitesting:loaded", flush=True) return xEdit commit aea68aa76ce0ee7c074f5b2ea9178aea726d7e04 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 23 16:47:02 2019 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 23 16:47:02 2019 +0200 mass-uitesting: Do not delete protected sheets diff --git a/uitest/mass-testing/calc.py b/uitest/mass-testing/calc.py index 38078cd..dc19af8 100755 --- a/uitest/mass-testing/calc.py +++ b/uitest/mass-testing/calc.py @@ -113,36 +113,36 @@ class massTesting(UITestCase): if xEdit: document = self.ui_test.get_component() nrSheets = document.Sheets.getCount() #number of sheets in the document - if nrSheets == 1: - #copy sheet and undo + #go to first sheet + for i in range(nrSheets - 1): + self.xUITest.executeCommand(".uno:JumpToPrevTable") + + ignoreSheets = 0 + for i in range(nrSheets): + #copy sheet, undo and delete self.ui_test.execute_dialog_through_command(".uno:Move") xDialog = self.xUITest.getTopFocusWindow() + xCopy = xDialog.getChild("copy") + xCopy.executeAction("CLICK", tuple()) xOKBtn = xDialog.getChild("ok") self.ui_test.close_dialog_through_button(xOKBtn) - self.assertEqual(document.Sheets.getCount(), 2) + self.xUITest.executeCommand(".uno:Undo") - else: - #copy sheet and undo and delete - #go to first sheet - for i in range(nrSheets - 1): - self.xUITest.executeCommand(".uno:JumpToPrevTable") - #copy sheet; delete sheet - for i in range(nrSheets - 1): - self.ui_test.execute_dialog_through_command(".uno:Move") - xDialog = self.xUITest.getTopFocusWindow() - xCopy = xDialog.getChild("copy") - xCopy.executeAction("CLICK", tuple()) - xOKBtn = xDialog.getChild("ok") - self.ui_test.close_dialog_through_button(xOKBtn) - - self.xUITest.executeCommand(".uno:Undo") - - self.ui_test.execute_dialog_through_command(".uno:Remove") #delete sheet - xDialog = self.xUITest.getTopFocusWindow() - xOKButton = xDialog.getChild("yes") - xOKButton.executeAction("CLICK", tuple()) - - self.assertEqual(document.Sheets.getCount(), 1) + + if document.Sheets[ignoreSheets].isProtected(): + #Do not count the last sheet + if i < nrSheets - 1: + ignoreSheets += 1 + self.xUITest.executeCommand(".uno:JumpToNextTable") + else: + #Do not delete the last sheet + if i < nrSheets - 1: + self.ui_test.execute_dialog_through_command(".uno:Remove") #delete sheet + xDialog = self.xUITest.getTopFocusWindow() + xOKButton = xDialog.getChild("yes") + xOKButton.executeAction("CLICK", tuple()) + + self.assertEqual(document.Sheets.getCount(), 1 + ignoreSheets) self.ui_test.close_doc() commit a91e1c5e96623bfc53ac5506024aacd243df3901 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 23 16:45:50 2019 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 23 16:45:50 2019 +0200 mass-uitesting: Ignore protected files diff --git a/uitest/mass-testing/calc.py b/uitest/mass-testing/calc.py index 91bd21b..38078cd 100755 --- a/uitest/mass-testing/calc.py +++ b/uitest/mass-testing/calc.py @@ -28,8 +28,8 @@ class massTesting(UITestCase): self.ui_test.load_file(fileName) document = self.ui_test.get_component() - # Ignore read-only files - if not hasattr(document, 'isReadonly') or document.isReadonly(): + # Ignore read-only or protected files + if not hasattr(document, 'isReadonly') or document.isReadonly() or document.isProtected(): handle_skip() try: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits