test_platform_config.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import os
  2. import sys
  3. PLUGIN_ROOT = os.path.abspath(os.path.dirname(__file__))
  4. sys.path.insert(0, PLUGIN_ROOT)
  5. sys.path.insert(0, os.environ.get("HERMES_ROOT", "/opt/hermes"))
  6. sys.path.insert(0, "/root/.hermes/plugins/platforms/chatto")
  7. from platform_config import (
  8. _get_env_or_extra_list,
  9. _get_env_or_extra_str,
  10. _get_env_or_extra_str_opt,
  11. _get_env_or_extra_truthy,
  12. _split_str_to_list,
  13. )
  14. class TestPlatformConfigHelpers:
  15. """Test Chatto configuration helper functions."""
  16. def test_get_env_or_extra_str_prefers_env(self, monkeypatch):
  17. monkeypatch.setenv("CHATTO_TEST", " env-value ")
  18. assert _get_env_or_extra_str("CHATTO_TEST", "extra-value") == "env-value"
  19. def test_get_env_or_extra_str_uses_extra_when_no_env(self, monkeypatch):
  20. monkeypatch.delenv("CHATTO_TEST", raising=False)
  21. assert _get_env_or_extra_str("CHATTO_TEST", " extra-value ") == "extra-value"
  22. def test_get_env_or_extra_str_returns_empty_when_missing(self, monkeypatch):
  23. """The non-optional helper coerces a missing value to "" — use
  24. _get_env_or_extra_str_opt() when None has to stay distinguishable."""
  25. monkeypatch.delenv("CHATTO_TEST", raising=False)
  26. assert _get_env_or_extra_str("CHATTO_TEST", None) == ""
  27. def test_get_env_or_extra_str_opt_returns_none_when_missing(self, monkeypatch):
  28. monkeypatch.delenv("CHATTO_TEST", raising=False)
  29. assert _get_env_or_extra_str_opt("CHATTO_TEST", None) is None
  30. def test_get_env_or_extra_str_opt_prefers_env(self, monkeypatch):
  31. monkeypatch.setenv("CHATTO_TEST", " env-value ")
  32. assert _get_env_or_extra_str_opt("CHATTO_TEST", "extra-value") == "env-value"
  33. def test_get_env_or_extra_truthy_parses_truthy_values(self, monkeypatch):
  34. monkeypatch.setenv("CHATTO_TEST", " yes ")
  35. assert _get_env_or_extra_truthy("CHATTO_TEST", None) is True
  36. def test_get_env_or_extra_truthy_uses_extra_when_no_env(self, monkeypatch):
  37. monkeypatch.delenv("CHATTO_TEST", raising=False)
  38. assert _get_env_or_extra_truthy("CHATTO_TEST", " true ") is True
  39. def test_get_env_or_extra_truthy_uses_default_false(self, monkeypatch):
  40. monkeypatch.delenv("CHATTO_TEST", raising=False)
  41. assert _get_env_or_extra_truthy("CHATTO_TEST", "false") is False
  42. def test_get_env_or_extra_truthy_default_true_when_none_and_no_extra(
  43. self, monkeypatch
  44. ):
  45. monkeypatch.delenv("CHATTO_TEST", raising=False)
  46. assert _get_env_or_extra_truthy("CHATTO_TEST", None, default=True) is True
  47. def test_get_env_or_extra_truthy_default_false_when_none_and_no_extra(
  48. self, monkeypatch
  49. ):
  50. monkeypatch.delenv("CHATTO_TEST", raising=False)
  51. assert _get_env_or_extra_truthy("CHATTO_TEST", None, default=False) is False
  52. def test_get_env_or_extra_truthy_explicit_bool_true(self, monkeypatch):
  53. monkeypatch.delenv("CHATTO_TEST", raising=False)
  54. assert _get_env_or_extra_truthy("CHATTO_TEST", True, default=False) is True
  55. def test_get_env_or_extra_truthy_explicit_bool_false(self, monkeypatch):
  56. monkeypatch.delenv("CHATTO_TEST", raising=False)
  57. assert _get_env_or_extra_truthy("CHATTO_TEST", False, default=True) is False
  58. def test_split_str_to_list_handles_comma_separated_values(self):
  59. assert _split_str_to_list("a,b, c ,d") == ["a", "b", "c", "d"]
  60. def test_get_env_or_extra_list_prefers_env(self, monkeypatch):
  61. monkeypatch.setenv("CHATTO_TEST", " one,two , three")
  62. assert _get_env_or_extra_list("CHATTO_TEST", ["ignored", "list"]) == [
  63. "one",
  64. "two",
  65. "three",
  66. ]
  67. def test_get_env_or_extra_list_uses_extra_list(self, monkeypatch):
  68. monkeypatch.delenv("CHATTO_TEST", raising=False)
  69. assert _get_env_or_extra_list("CHATTO_TEST", ["a", " b "]) == ["a", "b"]
  70. def test_get_env_or_extra_list_uses_extra_string(self, monkeypatch):
  71. monkeypatch.delenv("CHATTO_TEST", raising=False)
  72. assert _get_env_or_extra_list("CHATTO_TEST", "x,y") == ["x", "y"]
  73. def test_get_env_or_extra_list_returns_empty_for_none(self, monkeypatch):
  74. monkeypatch.delenv("CHATTO_TEST", raising=False)
  75. assert _get_env_or_extra_list("CHATTO_TEST", None) == []