diff --git a/compass/landice/tests/ensemble_generator/sgh_restart_ensemble/test_case.py b/compass/landice/tests/ensemble_generator/sgh_restart_ensemble/test_case.py index 16388c1dd0..22a46a2ad8 100644 --- a/compass/landice/tests/ensemble_generator/sgh_restart_ensemble/test_case.py +++ b/compass/landice/tests/ensemble_generator/sgh_restart_ensemble/test_case.py @@ -11,6 +11,7 @@ compass run -w /work/restart """ +import configparser import glob import json import os @@ -57,9 +58,16 @@ def configure(self): 4. Sets up ensemble_manager to handle job submission """ config = self.config - section = config.get('restart_ensemble', {}) - spinup_work_dir = section.get('spinup_work_dir') + try: + spinup_work_dir = config.get('restart_ensemble', 'spinup_work_dir') + except (configparser.NoSectionError, configparser.NoOptionError): + raise ValueError( + "restart_ensemble config must specify spinup_work_dir\n" + "Add to config file:\n" + "[restart_ensemble]\n" + "spinup_work_dir = /path/to/spinup/ensemble" + ) if not spinup_work_dir: raise ValueError( @@ -72,12 +80,24 @@ def configure(self): if not os.path.exists(spinup_work_dir): raise ValueError(f"spinup_work_dir not found: {spinup_work_dir}") - # Get restart configuration - max_consecutive_restarts = section.getint( - 'max_consecutive_restarts', 3) - min_simulation_years = section.getfloat( - 'min_simulation_years_before_restart', 50.0) - auto_restart = section.getboolean('auto_restart_incomplete', True) + # Get restart configuration using proper configparser API + try: + max_consecutive_restarts = config.getint( + 'restart_ensemble', 'max_consecutive_restarts') + except (configparser.NoSectionError, configparser.NoOptionError): + max_consecutive_restarts = 3 + + try: + min_simulation_years = config.getfloat( + 'restart_ensemble', 'min_simulation_years_before_restart') + except (configparser.NoSectionError, configparser.NoOptionError): + min_simulation_years = 50.0 + + try: + auto_restart = config.getboolean( + 'restart_ensemble', 'auto_restart_incomplete') + except (configparser.NoSectionError, configparser.NoOptionError): + auto_restart = True # Scan for existing run directories run_dirs = sorted(glob.glob(os.path.join(spinup_work_dir, 'run*')))