diff options
author | Saw-jan <saw.jan.grg3e@gmail.com> | 2022-10-11 13:27:17 +0300 |
---|---|---|
committer | Sawjan Gurung <saw.jan.grg3e@gmail.com> | 2022-10-14 15:15:16 +0300 |
commit | e7906116e8dbf9c4f9d1223cab8a5f52c125cf28 (patch) | |
tree | b503cc9b690120fa8995fc3f4009ad49df7b7efe /test | |
parent | b528ce0721e5851a5037ccc2b22ecec915282e5b (diff) |
fix python format
Diffstat (limited to 'test')
-rw-r--r-- | test/gui/shared/scripts/helpers/SyncHelper.py | 7 | ||||
-rw-r--r-- | test/gui/shared/steps/steps.py | 86 | ||||
-rw-r--r-- | test/gui/tst_editFiles/test.feature | 2 |
3 files changed, 80 insertions, 15 deletions
diff --git a/test/gui/shared/scripts/helpers/SyncHelper.py b/test/gui/shared/scripts/helpers/SyncHelper.py index 04c5ce602..5f071cb9f 100644 --- a/test/gui/shared/scripts/helpers/SyncHelper.py +++ b/test/gui/shared/scripts/helpers/SyncHelper.py @@ -13,10 +13,13 @@ SYNC_STATUS = { 'UPDATE': 'UPDATE_VIEW', } -# default sync patterns for the initial sync (after adding account) SYNC_PATTERNS = { + # default sync patterns for the initial sync (after adding account) + # the pattern can be of TWO types depending on the available resources (files/folders) 'initial': [ + # when syncing empty account (hidden files are ignored) [SYNC_STATUS['UPDATE'], SYNC_STATUS['OK']], + # when syncing an account that has some files/folders [SYNC_STATUS['SYNC'], SYNC_STATUS['OK']], ], 'synced': [SYNC_STATUS['SYNC'], SYNC_STATUS['OK']], @@ -61,7 +64,7 @@ def filterSyncMessages(messages): return messages[start_idx:] -def filterMessageForItem(messages, item): +def filterMessagesForItem(messages, item): filteredMsg = [] for msg in messages: if msg.rstrip('/').endswith(item.rstrip('/')): diff --git a/test/gui/shared/steps/steps.py b/test/gui/shared/steps/steps.py index d735b4e66..811f5d3dc 100644 --- a/test/gui/shared/steps/steps.py +++ b/test/gui/shared/steps/steps.py @@ -11,6 +11,7 @@ import requests import builtins import shutil +from objectmaphelper import RegularExpression from pageObjects.AccountConnectionWizard import AccountConnectionWizard from helpers.SetupClientHelper import * from helpers.FilesHelper import buildConflictedRegex @@ -28,7 +29,7 @@ from helpers.SyncHelper import ( getSyncedPattern, generateSyncPatternFromMessages, filterSyncMessages, - filterMessageForItem, + filterMessagesForItem, matchPatterns, ) @@ -37,6 +38,7 @@ from helpers.SyncHelper import ( # if the IDE fails to reference the script, add the folder in Edit->Preferences->PyDev->Interpreters->Libraries sys.path.append(os.path.realpath('../../../shell_integration/nautilus/')) from syncstate import SocketConnect +import functools socketConnect = None @@ -67,14 +69,12 @@ def updateSocketMessages(messages): def clearSocketMessages(resource=''): global socket_messages if resource: - print('---top---') - print(socket_messages) - resource_messages = set(filterMessageForItem(socket_messages, resource)) - socket_messages = [msg for msg in socket_messages if msg not in resource_messages] + resource_messages = set(filterMessagesForItem(socket_messages, resource)) + socket_messages = [ + msg for msg in socket_messages if msg not in resource_messages + ] else: socket_messages.clear() - print('---low---') - print(socket_messages) def listenSyncStatusForItem(item, type='FOLDER'): @@ -108,7 +108,12 @@ def waitForSyncToComplete(context, patterns=None, resource='', resourceType='FOL def waitForInitialSyncToComplete(context): - waitForSyncToComplete(context, getInitialSyncPatterns(), context.userData['currentUserSyncPath'], 'FOLDER') + waitForSyncToComplete( + context, + getInitialSyncPatterns(), + context.userData['currentUserSyncPath'], + 'FOLDER', + ) def hasSyncPattern(patterns): @@ -119,7 +124,9 @@ def hasSyncPattern(patterns): for idx, _ in enumerate(messages): next = idx + 1 if next in range(len(messages)): - actual_pattern = generateSyncPatternFromMessages(messages[idx : next + (len(pattern) - 1)]) + actual_pattern = generateSyncPatternFromMessages( + messages[idx : next + (len(pattern) - 1)] + ) if matchPatterns(pattern, actual_pattern): return True # 100 milliseconds polling interval @@ -258,15 +265,23 @@ def getSocketConnection(): # Using socket API to check file sync status def hasSyncStatus(itemName, status): sync_messages = readAndUpdateSocketMessages() - sync_messages = filterMessageForItem(sync_messages, itemName) + sync_messages = filterMessagesForItem(sync_messages, itemName) for line in sync_messages: if line.startswith(status) and line.rstrip('/').endswith(itemName.rstrip('/')): return True return False +def folderHasSyncStatus(folderName, status): + return hasSyncStatus('FOLDER', folderName, status) + + +def fileHasSyncStatus(fileName, status): + return hasSyncStatus('FILE', fileName, status) + + # useful for checking sync status such as 'error', 'ignore' -# but not quit so reliable for checking 'ok' sync status +# but not quite so reliable for checking 'ok' sync status def waitForFileOrFolderToHaveSyncStatus( context, resource, resourceType, status=SYNC_STATUS['OK'], timeout=None ): @@ -280,7 +295,7 @@ def waitForFileOrFolderToHaveSyncStatus( result = waitFor( lambda: hasSyncStatus(resource, status), timeout, - ) + ) if not result: if status == SYNC_STATUS['ERROR']: @@ -300,6 +315,53 @@ def waitForFileOrFolderToHaveSyncStatus( ) +def waitForSyncToStart(context, resource, resourceType): + resource = join(context.userData['currentUserSyncPath'], resource) + + hasStatusNOP = hasSyncStatus(resourceType.upper(), resource, SYNC_STATUS['NOP']) + hasStatusSYNC = hasSyncStatus(resourceType.upper(), resource, SYNC_STATUS['SYNC']) + + if hasStatusSYNC: + return + + try: + if hasStatusNOP: + waitForFileOrFolderToHaveSyncStatus( + context, resource, resourceType, SYNC_STATUS['SYNC'] + ) + else: + waitForFileOrFolderToHaveSyncStatus( + context, + resource, + resourceType, + SYNC_STATUS['SYNC'], + context.userData['minSyncTimeout'] * 1000, + ) + except: + hasStatusNOP = hasSyncStatus(resourceType.upper(), resource, SYNC_STATUS['NOP']) + if hasStatusNOP: + raise Exception( + "Expected " + + resourceType + + " '" + + resource + + "' to have sync started but not." + ) + + +def waitForFileOrFolderToSync(context, resource, resourceType): + waitForSyncToStart(context, resource, resourceType) + waitForFileOrFolderToHaveSyncStatus( + context, resource, resourceType, SYNC_STATUS['OK'] + ) + + +def waitForRootFolderToSync(context): + waitForFileOrFolderToSync( + context, context.userData['currentUserSyncPath'], 'folder' + ) + + def waitForFileOrFolderToHaveSyncError(context, resource, resourceType): waitForFileOrFolderToHaveSyncStatus( context, resource, resourceType, SYNC_STATUS['ERROR'] diff --git a/test/gui/tst_editFiles/test.feature b/test/gui/tst_editFiles/test.feature index 37b2f1be6..9855a4e19 100644 --- a/test/gui/tst_editFiles/test.feature +++ b/test/gui/tst_editFiles/test.feature @@ -13,5 +13,5 @@ Feature: edit files Given user "Alice" has uploaded file with content "ownCloud test text file 0" to "S@mpleFile!With,$pecial?Characters.txt" on the server And user "Alice" has set up a client with default settings When the user overwrites the file "S@mpleFile!With,$pecial?Characters.txt" with content "overwrite ownCloud test text file" - When the user waits for file "S@mpleFile!With,$pecial?Characters.txt" to be synced + And the user waits for file "S@mpleFile!With,$pecial?Characters.txt" to be synced Then as "Alice" the file "S@mpleFile!With,$pecial?Characters.txt" on the server should have the content "overwrite ownCloud test text file"
\ No newline at end of file |