def firestore_emulator()

in solutions_builder/template_root/{{common_path if has_common}}/src/common/testing/firestore_emulator.py [0:0]


def firestore_emulator():

  is_windows = bool(platform.system() == "Windows")
  if is_windows:
    emulator = subprocess.Popen(
        "firebase emulators:start --only firestore --project fake-project",
        shell=True)
  else:
    emulator = subprocess.Popen(
        "firebase emulators:start --only firestore --project fake-project",
        shell=True,
        preexec_fn=os.setsid)
  time.sleep(15)

  os.environ["FIRESTORE_EMULATOR_HOST"] = "localhost:8080"
  os.environ["GOOGLE_CLOUD_PROJECT"] = "fake-project"
  os.environ["PROJECT_ID"] = "fake-project"

  # yield so emulator isn't recreated each test
  yield emulator

  if is_windows:
    os.kill(emulator.pid, signal.CTRL_BREAK_EVENT)
  else:
    os.killpg(os.getpgid(emulator.pid), signal.SIGTERM)

  # delete debug files
  # some get deleted, not all

  try:
    os.remove("firestore-debug.log")
    os.remove("ui-debug.log")
  except OSError:
    pass