base.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import os
  2. import shutil
  3. import unittest
  4. from pycs import app
  5. from pycs import db
  6. from pycs import settings
  7. from pycs.frontend.WebServer import WebServer
  8. from pycs.database.Model import Model
  9. from pycs.database.LabelProvider import LabelProvider
  10. server = None
  11. class BaseTestCase(unittest.TestCase):
  12. def setUp(self, discovery: bool = True):
  13. global server
  14. app.config["TESTING"] = True
  15. self.projects_dir = app.config["TEST_PROJECTS_DIR"] = "test_projects"
  16. app.config["WTF_CSRF_ENABLED"] = False
  17. app.config["DEBUG"] = False
  18. app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///"
  19. db.create_all()
  20. self.client = app.test_client()
  21. if server is None:
  22. server = WebServer(app, settings)
  23. server.start_runner()
  24. # create database
  25. if discovery:
  26. # run discovery modules
  27. Model.discover("models/")
  28. LabelProvider.discover("labels/")
  29. # self.database = Database(discovery=discovery)
  30. def tearDown(self):
  31. global server
  32. server.stop_runner()
  33. if os.path.exists(self.projects_dir):
  34. shutil.rmtree(self.projects_dir)
  35. db.drop_all()
  36. def wait_for_coroutines(self):
  37. server.wait_for_runner()