import pytest
from agebd.subs import SubstitutionsConfig
from agebd.utils import get_git_root
from ci.check_ui_files import check_ui_file, check_ui_files, suffix_token
REPO_ROOT = get_git_root(__file__)
TOKEN = "@@agebd_env_suffix_upper@@"
@pytest.fixture
def token():
return suffix_token(SubstitutionsConfig.load(REPO_ROOT / "config"))
def test_repo_ui_files_all_carry_the_suffix():
check_ui_files()
def test_token_comes_from_the_central_config(token):
assert token == TOKEN
def test_pv_name_with_the_suffix_is_accepted(token):
text = f'AGEBD-ALH{TOKEN}:NTURNS-ONOFF'
assert check_ui_file(text, token, "A_BD_NTurns.ui") == []
def test_pv_name_without_the_suffix_is_reported(token):
text = 'AGEBD-ALH:NTURNS-ONOFF'
errors = check_ui_file(text, token, "A_BD_NTurns.ui")
assert len(errors) == 1
assert "AGEBD-ALH" in errors[0]
assert "A_BD_NTurns.ui:1" in errors[0]
def test_ioc_macro_value_without_the_suffix_is_reported(token):
"""This is the bug that had the dev Service Manager driving prod IOCs."""
text = "IOC=AGEBD-CPCL-NTURNS,service=NTURNS,name=NTurns"
errors = check_ui_file(text, token, "A_BD_ServiceManager.ui")
assert len(errors) == 1
assert "AGEBD-CPCL-NTURNS" in errors[0]
def test_systemd_unit_name_is_exempt(token):
text = "systemctl --user restart AGEBD-SERVICE-MASTER.service"
assert check_ui_file(text, token, "A_BD_ServiceManager.ui") == []
def test_other_facilities_are_not_our_business(token):
text = "IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL"
assert check_ui_file(text, token, "A_BD_ServiceManager.ui") == []
def test_reports_the_line_number(token):
text = "line one\nline two\nAGEBD-TUNE:AO\n"
errors = check_ui_file(text, token, "A_BD_Tune.ui")
assert "A_BD_Tune.ui:3" in errors[0]