def test_missing_initial_cycle_point(): """Test that validation fails when the initial cycle point is missing for datetime cycling""" mocked_config = Mock() mocked_config.cfg = { 'scheduling': { 'cycling mode': None, 'initial cycle point': None } } with pytest.raises(SuiteConfigError) as exc: SuiteConfig.process_initial_cycle_point(mocked_config) assert "This suite requires an initial cycle point" in str(exc.value)
def test_integer_cycling_default_initial_point(cycling_mode): """Test that the initial cycle point defaults to 1 for integer cycling mode.""" cycling_mode(integer=True) # This is a pytest fixture; sets cycling mode mocked_config = Mock() mocked_config.cfg = { 'scheduling': { 'cycling mode': 'integer', 'initial cycle point': None } } SuiteConfig.process_initial_cycle_point(mocked_config) assert mocked_config.cfg['scheduling']['initial cycle point'] == '1' assert mocked_config.initial_point == loader.get_point(1)
def test_process_icp( scheduling_cfg: Dict[str, Any], expected_icp: Optional[str], expected_opt_icp: Optional[str], expected_err: Optional[Tuple[Type[Exception], str]], monkeypatch: Fixture, cycling_mode: Fixture): """Test SuiteConfig.process_initial_cycle_point(). "now" is assumed to be 2005-01-02T06:15+0530 Params: scheduling_cfg: 'scheduling' section of workflow config. expected_icp: The expected icp value that gets set. expected_opt_icp: The expected value of options.icp that gets set (this gets stored in the workflow DB). expected_err: Exception class expected to be raised plus the message. """ int_cycling_mode = True if scheduling_cfg['cycling mode'] == loader.ISO8601_CYCLING_TYPE: int_cycling_mode = False iso8601.init(time_zone="+0530") cycling_mode(integer=int_cycling_mode) mocked_config = Mock() mocked_config.cfg = { 'scheduling': scheduling_cfg } mocked_config.options.icp = None monkeypatch.setattr('cylc.flow.config.get_current_time_string', lambda: '20050102T0615+0530') if expected_err: err, msg = expected_err with pytest.raises(err) as exc: SuiteConfig.process_initial_cycle_point(mocked_config) assert msg in str(exc.value) else: SuiteConfig.process_initial_cycle_point(mocked_config) assert mocked_config.cfg[ 'scheduling']['initial cycle point'] == expected_icp assert str(mocked_config.initial_point) == expected_icp opt_icp = mocked_config.options.icp if opt_icp is not None: opt_icp = str(loader.get_point(opt_icp).standardise()) assert opt_icp == expected_opt_icp