runtests.py 3.2 KB

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