mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-07-30 13:48:07 +02:00
add tests
This commit is contained in:
parent
065df720d1
commit
4831337f17
@ -52,7 +52,8 @@ def main() -> None:
|
|||||||
# Load the configuration.
|
# Load the configuration.
|
||||||
try:
|
try:
|
||||||
config = FrigateConfig.load(install=True)
|
config = FrigateConfig.load(install=True)
|
||||||
except ValidationError as e:
|
except (ValidationError, ScannerError) as e:
|
||||||
|
|
||||||
print("*************************************************************")
|
print("*************************************************************")
|
||||||
print("*************************************************************")
|
print("*************************************************************")
|
||||||
print("*** Your config file is not valid! ***")
|
print("*** Your config file is not valid! ***")
|
||||||
|
57
frigate/test/test_startup.py
Normal file
57
frigate/test/test_startup.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import unittest
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartup(unittest.TestCase):
|
||||||
|
def test_main_invalid_config(self):
|
||||||
|
import faulthandler
|
||||||
|
import io
|
||||||
|
import sys
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from ruamel.yaml.scanner import ScannerError
|
||||||
|
|
||||||
|
from frigate.__main__ import main
|
||||||
|
from frigate.app import FrigateApp
|
||||||
|
from frigate.config import FrigateConfig
|
||||||
|
|
||||||
|
|
||||||
|
def fake_load(install):
|
||||||
|
raise ScannerError("Simulated error for invalid config")
|
||||||
|
|
||||||
|
|
||||||
|
with patch.object(FrigateConfig, "load", fake_load):
|
||||||
|
|
||||||
|
with patch.object(FrigateApp, "__init__", autospec=True) as mock_app_init:
|
||||||
|
mock_app_init.return_value = None # Avoid running the real initializer.
|
||||||
|
|
||||||
|
with patch.object(FrigateApp, "start_config_editor") as mock_start_editor:
|
||||||
|
|
||||||
|
original_argv = sys.argv
|
||||||
|
sys.argv = ["Frigate"]
|
||||||
|
|
||||||
|
captured_output = io.StringIO()
|
||||||
|
original_stdout = sys.stdout
|
||||||
|
sys.stdout = captured_output
|
||||||
|
|
||||||
|
with patch.object(faulthandler, "enable", lambda: None):
|
||||||
|
try:
|
||||||
|
main()
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
finally:
|
||||||
|
sys.stdout = original_stdout
|
||||||
|
sys.argv = original_argv
|
||||||
|
|
||||||
|
output = captured_output.getvalue()
|
||||||
|
|
||||||
|
self.assertIn("Your config file is not valid!", output)
|
||||||
|
|
||||||
|
mock_start_editor.assert_called_once()
|
||||||
|
mock_app_init.assert_called_once()
|
||||||
|
passed_config = mock_app_init.call_args[0][1]
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
passed_config.environment_vars.get("INVALID_CONFIG"), "true",
|
||||||
|
"Expected INVALID_CONFIG to be set to 'true' in the config passed to FrigateApp"
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user