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]