mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-11-14 17:24:08 +00:00
3ab0dcb9e6
Templated hooks we almost completely useless, so we get rid of them. This allows us to get rid entirely of hook names and hook indexes, which makes the whole implementation much simpler. Hook removal (with `clear_all`) is achieved thanks to weak references.
110 lines
4.3 KiB
Python
110 lines
4.3 KiB
Python
import unittest
|
|
|
|
from tests.helpers import temporary_root
|
|
from tutor import config as tutor_config
|
|
|
|
from .base import TestCommandMixin
|
|
|
|
|
|
class ConfigTests(unittest.TestCase, TestCommandMixin):
|
|
def test_config_help(self) -> None:
|
|
result = self.invoke(["config", "--help"])
|
|
self.assertEqual(0, result.exit_code)
|
|
self.assertFalse(result.exception)
|
|
|
|
def test_config_save(self) -> None:
|
|
result = self.invoke(["config", "save"])
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|
|
|
|
def test_config_save_interactive(self) -> None:
|
|
result = self.invoke(["config", "save", "-i"])
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|
|
|
|
def test_config_save_skip_update(self) -> None:
|
|
result = self.invoke(["config", "save", "-e"])
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|
|
|
|
def test_config_save_set_value(self) -> None:
|
|
with temporary_root() as root:
|
|
result1 = self.invoke_in_root(root, ["config", "save", "-s", "key=value"])
|
|
result2 = self.invoke_in_root(root, ["config", "printvalue", "key"])
|
|
self.assertFalse(result1.exception)
|
|
self.assertEqual(0, result1.exit_code)
|
|
self.assertIn("value", result2.output)
|
|
|
|
def test_config_save_unset_value(self) -> None:
|
|
with temporary_root() as root:
|
|
result1 = self.invoke_in_root(root, ["config", "save", "-U", "key"])
|
|
result2 = self.invoke_in_root(root, ["config", "printvalue", "key"])
|
|
self.assertFalse(result1.exception)
|
|
self.assertEqual(0, result1.exit_code)
|
|
self.assertEqual(1, result2.exit_code)
|
|
|
|
def test_config_printroot(self) -> None:
|
|
with temporary_root() as root:
|
|
result = self.invoke_in_root(root, ["config", "printroot"])
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|
|
self.assertIn(root, result.output)
|
|
|
|
def test_config_printvalue(self) -> None:
|
|
with temporary_root() as root:
|
|
self.invoke_in_root(root, ["config", "save"])
|
|
result = self.invoke_in_root(
|
|
root, ["config", "printvalue", "MYSQL_ROOT_PASSWORD"]
|
|
)
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|
|
self.assertTrue(result.output)
|
|
|
|
def test_config_append(self) -> None:
|
|
with temporary_root() as root:
|
|
self.invoke_in_root(
|
|
root, ["config", "save", "--append=TEST=value"], catch_exceptions=False
|
|
)
|
|
config1 = tutor_config.load(root)
|
|
self.invoke_in_root(
|
|
root, ["config", "save", "--append=TEST=value"], catch_exceptions=False
|
|
)
|
|
config2 = tutor_config.load(root)
|
|
self.invoke_in_root(
|
|
root, ["config", "save", "--remove=TEST=value"], catch_exceptions=False
|
|
)
|
|
config3 = tutor_config.load(root)
|
|
# Value is appended
|
|
self.assertEqual(["value"], config1["TEST"])
|
|
# Value is not appended a second time
|
|
self.assertEqual(["value"], config2["TEST"])
|
|
# Value is removed
|
|
self.assertEqual([], config3["TEST"])
|
|
|
|
def test_config_append_with_existing_default(self) -> None:
|
|
with temporary_root() as root:
|
|
self.invoke_in_root(
|
|
root,
|
|
[
|
|
"config",
|
|
"save",
|
|
"--append=OPENEDX_EXTRA_PIP_REQUIREMENTS=my-package==1.0.0",
|
|
],
|
|
catch_exceptions=False,
|
|
)
|
|
config = tutor_config.load(root)
|
|
assert isinstance(config["OPENEDX_EXTRA_PIP_REQUIREMENTS"], list)
|
|
self.assertEqual(2, len(config["OPENEDX_EXTRA_PIP_REQUIREMENTS"]))
|
|
self.assertEqual(
|
|
"my-package==1.0.0", config["OPENEDX_EXTRA_PIP_REQUIREMENTS"][1]
|
|
)
|
|
|
|
|
|
class PatchesTests(unittest.TestCase, TestCommandMixin):
|
|
def test_config_patches_list(self) -> None:
|
|
with temporary_root() as root:
|
|
self.invoke_in_root(root, ["config", "save"])
|
|
result = self.invoke_in_root(root, ["config", "patches", "list"])
|
|
self.assertFalse(result.exception)
|
|
self.assertEqual(0, result.exit_code)
|