mirror of
https://github.com/OPM/opm-simulators.git
synced 2026-10-26 07:30:08 -05:00
Move simulator instantiation to factory functions that automatically disable async ECL output. This prevents future contributors from forgetting the --enable-async-ecl-output=false flag. - Add create_black_oil_simulator/create_gas_water_simulator to pytest_common - Define ENABLE_ASYNC_ECL_OUTPUT_FLAG constant - Update all tests to use factory functions - No functional changes, pure refactoring
64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import os
|
|
from contextlib import contextmanager
|
|
|
|
@contextmanager
|
|
def pushd(path):
|
|
cwd = os.getcwd()
|
|
if not os.path.isdir(path):
|
|
os.makedirs(path)
|
|
os.chdir(path)
|
|
yield
|
|
os.chdir(cwd)
|
|
|
|
ENABLE_ASYNC_ECL_OUTPUT_FLAG = '--enable-async-ecl-output=false'
|
|
|
|
def create_black_oil_simulator(*args, **kwargs):
|
|
"""Create BlackOilSimulator with test-safe default arguments.
|
|
|
|
Automatically disables async ECL output to prevent race conditions
|
|
with pushd context manager in tests.
|
|
"""
|
|
from opm.simulators import BlackOilSimulator
|
|
|
|
flag_to_add = ENABLE_ASYNC_ECL_OUTPUT_FLAG
|
|
# Handle different constructor patterns
|
|
if 'args' in kwargs:
|
|
# Add our flag to existing args
|
|
if flag_to_add not in kwargs['args']:
|
|
kwargs['args'].append(flag_to_add)
|
|
elif len(args) >= 4:
|
|
# Constructor with deck, state, schedule, summary_config
|
|
# Add args parameter
|
|
if len(args) == 4:
|
|
args = args + ([flag_to_add],)
|
|
elif len(args) == 5:
|
|
# Args already provided, add our flag
|
|
args_list = list(args[4]) if args[4] else []
|
|
if flag_to_add not in args_list:
|
|
args_list.append(flag_to_add)
|
|
args = args[:4] + (args_list,)
|
|
else:
|
|
# Constructor with filename - add args parameter
|
|
kwargs['args'] = kwargs.get('args', [])
|
|
if flag_to_add not in kwargs['args']:
|
|
kwargs['args'].append(flag_to_add)
|
|
|
|
return BlackOilSimulator(*args, **kwargs)
|
|
|
|
def create_gas_water_simulator(*args, **kwargs):
|
|
"""Create GasWaterSimulator with test-safe default arguments.
|
|
|
|
Automatically disables async ECL output to prevent race conditions
|
|
with pushd context manager in tests.
|
|
"""
|
|
from opm.simulators import GasWaterSimulator
|
|
|
|
flag_to_add = ENABLE_ASYNC_ECL_OUTPUT_FLAG
|
|
# Add our flag to args
|
|
kwargs['args'] = kwargs.get('args', [])
|
|
if flag_to_add not in kwargs['args']:
|
|
kwargs['args'].append(flag_to_add)
|
|
|
|
return GasWaterSimulator(*args, **kwargs)
|
|
|