Commit Diff


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+$)|(?<float>\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