1import os
2import subprocess
3import sys
4
5import click
6from dotenv import load_dotenv
7
8from plain.cli import register_cli
9
10
11@register_cli("test")
12@click.command(
13 context_settings={
14 "ignore_unknown_options": True,
15 }
16)
17@click.argument("pytest_args", nargs=-1, type=click.UNPROCESSED)
18def cli(pytest_args):
19 """Run pytest with .env.test loaded"""
20
21 if os.path.exists(".env.test"):
22 click.secho("Loading environment variables from .env.test", fg="yellow")
23 # plain.dev may load .env files first, so make sure we override any existing variables
24 load_dotenv(".env.test", override=True)
25
26 cmd = [
27 sys.executable,
28 "-m",
29 "pytest",
30 ] + list(pytest_args)
31
32 result = subprocess.run(cmd, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr)
33
34 if returncode := result.returncode:
35 sys.exit(returncode)