7
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-06-10 09:42:23 +00:00
tutor/tests/commands/base.py
Régis Behmo 3b6d2404e5 fix: unit tests when run as root
GitHub Actions sometimes runs `make tests` as root; e.g: in the release script.
There were unit tests that were breaking in that scenario. I have no idea why
tests were not breaking in the test.yml workflow.
2022-11-29 15:50:34 +01:00

37 lines
1.0 KiB
Python

import typing as t
import click.testing
from tests.helpers import TestContext, temporary_root
from tutor.commands.cli import cli
class TestCommandMixin:
"""
Run CLI tests in an isolated test root.
"""
@staticmethod
def invoke(args: t.List[str]) -> click.testing.Result:
with temporary_root() as root:
return TestCommandMixin.invoke_in_root(root, args)
@staticmethod
def invoke_in_root(root: str, args: t.List[str]) -> click.testing.Result:
"""
Use this method for commands that all need to run in the same root:
with temporary_root() as root:
result1 = self.invoke_in_root(root, ...)
result2 = self.invoke_in_root(root, ...)
"""
runner = click.testing.CliRunner(
env={
"TUTOR_ROOT": root,
"TUTOR_IGNORE_ENTRYPOINT_PLUGINS": "1",
"TUTOR_IGNORE_DICT_PLUGINS": "1",
},
mix_stderr=False,
)
return runner.invoke(cli, args, obj=TestContext(root))