commit 3382df6f682dd7ab880ab82a7479e4f3958efbd4 from: Sergey Bronnikov date: Wed Aug 07 10:47:51 2024 UTC rules/python: fix sync_sleep rule commit - 9267a13adf66323ac2ffb0544b81f40f0f74dce5 commit + 3382df6f682dd7ab880ab82a7479e4f3958efbd4 blob - ac9e2045c34ebb3fbe98fa3781b83ceb87bbdc81 blob + b7d4945cbb3698dd38c6e4a717af069ae925b189 --- rules/python/flakiness/sync_sleep.py +++ rules/python/flakiness/sync_sleep.py @@ -1,4 +1,6 @@ from selenium import webdriver +import asyncio + # rule-id: sync_sleep webdriver.set_page_load_timeout(30) webdriver.set_page_load_timeout(0.3) @@ -7,20 +9,13 @@ webdriver.set_page_load_timeout(0.3) webdriver.set_script_timeout(20) webdriver.set_script_timeout(0.2) -# rule-id: sync_sleep -await asyncio.sleep(1) +async def foo(): + # rule-id: sync_sleep + await asyncio.sleep(1) import time + # rule-id: sync_sleep time.sleep(10) # rule-id: sync_sleep time.sleep(0.2) - -def a(): - return 10 - -# ok: sync_sleep -t.sleep(a()) - -# ok: sync_sleep -t.sleep(some_var) blob - 44453484ed64a020ff99c2a4dda04e1bcc5b4841 blob + 4fa10cb365f998ae02258883f20a535907978255 --- rules/python/flakiness/sync_sleep.yaml +++ rules/python/flakiness/sync_sleep.yaml @@ -1,30 +1,20 @@ rules: -- id: sync_sleep - patterns: - - pattern-not: time.sleep($F(...)) - - pattern-either: - - pattern: | - await asyncio.sleep($X: int) - - pattern: | - await asyncio.sleep($X: float) - - pattern: | - time.sleep($X: int) - - pattern: | - time.sleep($X: float) - - pattern: | - selenium.webdriver.set_page_load_timeout($X: int) - - pattern: | - selenium.webdriver.set_page_load_timeout($X: float) - - pattern: | - selenium.webdriver.set_script_timeout($X: int) - - pattern: | - selenium.webdriver.set_script_timeout($X: float) - message: | - Tests uses sleep, instead of the flexible wait method. - metadata: - references: - - https://stackoverflow.com/a/45347766/3665613 - - https://seleniumcamp.com/talk/deep-dive-into-selenium-waits/ - languages: - - python - severity: WARNING + - id: sync_sleep + pattern-either: + - pattern: time.sleep($D) + - pattern: await asyncio.sleep($D) + - pattern: await asyncio.sleep($D) + - pattern: selenium.webdriver.set_page_load_timeout($D) + - pattern: selenium.webdriver.set_page_load_timeout($D) + - pattern: selenium.webdriver.set_script_timeout($D) + - pattern: selenium.webdriver.set_script_timeout($D) + - pattern-regex: ^[+-]?(\pN+($|(?P>float)?e-?\pN+$)|(?\pN*[,.]\pN+)) + message: | + Tests uses sleep, instead of the flexible wait method. + metadata: + references: + - https://stackoverflow.com/a/45347766/3665613 + - https://seleniumcamp.com/talk/deep-dive-into-selenium-waits/ + languages: + - python + severity: WARNING