runtests.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/env python
  2. import argparse
  3. import os
  4. import shutil
  5. import sys
  6. import warnings
  7. from django.core.management import execute_from_command_line
  8. os.environ["DJANGO_SETTINGS_MODULE"] = "wagtail.test.settings"
  9. def make_parser():
  10. parser = argparse.ArgumentParser()
  11. parser.add_argument(
  12. "--deprecation",
  13. choices=["all", "pending", "imminent", "none"],
  14. default="imminent",
  15. )
  16. parser.add_argument("--postgres", action="store_true")
  17. parser.add_argument("--elasticsearch5", action="store_true")
  18. parser.add_argument("--elasticsearch6", action="store_true")
  19. parser.add_argument("--elasticsearch7", action="store_true")
  20. parser.add_argument("--elasticsearch8", action="store_true")
  21. parser.add_argument("--emailuser", action="store_true")
  22. parser.add_argument("--disabletimezone", action="store_true")
  23. parser.add_argument("--bench", action="store_true")
  24. return parser
  25. def parse_args(args=None):
  26. return make_parser().parse_known_args(args)
  27. def runtests():
  28. args, rest = parse_args()
  29. only_wagtail = r"^wagtail(\.|$)"
  30. if args.deprecation == "all":
  31. # Show all deprecation warnings from all packages
  32. warnings.simplefilter("default", DeprecationWarning)
  33. warnings.simplefilter("default", PendingDeprecationWarning)
  34. elif args.deprecation == "pending":
  35. # Show all deprecation warnings from wagtail
  36. warnings.filterwarnings(
  37. "default", category=DeprecationWarning, module=only_wagtail
  38. )
  39. warnings.filterwarnings(
  40. "default", category=PendingDeprecationWarning, module=only_wagtail
  41. )
  42. elif args.deprecation == "imminent":
  43. # Show only imminent deprecation warnings from wagtail
  44. warnings.filterwarnings(
  45. "default", category=DeprecationWarning, module=only_wagtail
  46. )
  47. elif args.deprecation == "none":
  48. # Deprecation warnings are ignored by default
  49. pass
  50. if args.postgres:
  51. os.environ["DATABASE_ENGINE"] = "django.db.backends.postgresql"
  52. if args.elasticsearch5:
  53. os.environ.setdefault("ELASTICSEARCH_URL", "http://localhost:9200")
  54. os.environ.setdefault("ELASTICSEARCH_VERSION", "5")
  55. elif args.elasticsearch6:
  56. os.environ.setdefault("ELASTICSEARCH_URL", "http://localhost:9200")
  57. os.environ.setdefault("ELASTICSEARCH_VERSION", "6")
  58. elif args.elasticsearch7:
  59. os.environ.setdefault("ELASTICSEARCH_URL", "http://localhost:9200")
  60. os.environ.setdefault("ELASTICSEARCH_VERSION", "7")
  61. elif args.elasticsearch8:
  62. os.environ.setdefault("ELASTICSEARCH_URL", "http://localhost:9200")
  63. os.environ.setdefault("ELASTICSEARCH_VERSION", "8")
  64. elif "ELASTICSEARCH_URL" in os.environ:
  65. # forcibly delete the ELASTICSEARCH_URL setting to skip those tests
  66. del os.environ["ELASTICSEARCH_URL"]
  67. if args.emailuser:
  68. os.environ["USE_EMAIL_USER_MODEL"] = "1"
  69. if args.disabletimezone:
  70. os.environ["DISABLE_TIMEZONE"] = "1"
  71. if args.bench:
  72. benchmarks = [
  73. "wagtail.admin.tests.benches",
  74. ]
  75. argv = [sys.argv[0], "test", "-v2"] + benchmarks + rest
  76. else:
  77. argv = [sys.argv[0], "test"] + rest
  78. try:
  79. execute_from_command_line(argv)
  80. finally:
  81. from wagtail.test.settings import MEDIA_ROOT, STATIC_ROOT
  82. shutil.rmtree(STATIC_ROOT, ignore_errors=True)
  83. shutil.rmtree(MEDIA_ROOT, ignore_errors=True)
  84. if __name__ == "__main__":
  85. runtests()