patch_selenium.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import os.path
  2. import re
  3. import subprocess
  4. PATCH_FILE_PATTERN = (
  5. (
  6. "scripts/patches/chrome_options.diff",
  7. ".venv/lib/python3.8/site-packages/selenium/webdriver/chrome/options.py",
  8. re.compile(r"path to the \\\*\.crx file"),
  9. ),
  10. (
  11. "scripts/patches/firefox_profile.diff",
  12. ".venv/lib/python3.8/site-packages/selenium/webdriver/firefox/firefox_profile.py",
  13. re.compile(r"setting is ''"),
  14. ),
  15. (
  16. "scripts/patches/remote_webdriver.diff",
  17. ".venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py",
  18. re.compile(r' """Finds an element by id'),
  19. ),
  20. (
  21. "scripts/patches/remote_webelement.diff",
  22. ".venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py",
  23. re.compile(r' """Finds element within this element\'s children by ID'),
  24. ),
  25. (
  26. "scripts/patches/support_wait.diff",
  27. ".venv/lib/python3.8/site-packages/selenium/webdriver/support/wait.py",
  28. re.compile(r"\.\\ \\n"),
  29. ),
  30. )
  31. def main() -> int:
  32. for patch, filename, pattern in PATCH_FILE_PATTERN:
  33. with open(filename) as f:
  34. for line in f:
  35. if pattern.search(line):
  36. break
  37. else: # did not find the pattern
  38. continue
  39. print(f"patching {filename}, you will only see this once")
  40. sentry_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
  41. patch = os.path.join(sentry_root, patch)
  42. if subprocess.call(("patch", "-f", "-p0", "-i", patch)):
  43. return 1
  44. return 0
  45. if __name__ == "__main__":
  46. raise SystemExit(main())