Avoid modifying caller `phases` (`kw` is shallow copy)
This commit is contained in:
parent
0649e0662c
commit
0c3853e959
|
@ -604,20 +604,26 @@ def with_config_overrides(config_overrides, emitted_fork=None, emit=True):
|
||||||
"""
|
"""
|
||||||
def decorator(fn):
|
def decorator(fn):
|
||||||
def wrapper(*args, spec: Spec, **kw):
|
def wrapper(*args, spec: Spec, **kw):
|
||||||
|
# Apply config overrides to spec
|
||||||
spec, output_config = spec_with_config_overrides(_get_copy_of_spec(spec), config_overrides)
|
spec, output_config = spec_with_config_overrides(_get_copy_of_spec(spec), config_overrides)
|
||||||
if emit and emitted_fork is None:
|
|
||||||
yield 'config', 'cfg', output_config
|
|
||||||
|
|
||||||
|
# Apply config overrides to additional phases, if present
|
||||||
if 'phases' in kw:
|
if 'phases' in kw:
|
||||||
|
phases = {}
|
||||||
for fork in kw['phases']:
|
for fork in kw['phases']:
|
||||||
if is_post_fork(fork, spec.fork):
|
phases[fork], output = \
|
||||||
kw['phases'][fork], output_config = \
|
spec_with_config_overrides(_get_copy_of_spec(kw['phases'][fork]), config_overrides)
|
||||||
spec_with_config_overrides(_get_copy_of_spec(kw['phases'][fork]), config_overrides)
|
if emitted_fork == fork:
|
||||||
if emit and emitted_fork == fork:
|
output_config = output
|
||||||
yield 'config', 'cfg', output_config
|
kw['phases'] = phases
|
||||||
|
|
||||||
# Run the function
|
# Run the function
|
||||||
out = fn(*args, spec=spec, **kw)
|
out = fn(*args, spec=spec, **kw)
|
||||||
|
|
||||||
|
# Emit requested spec (with overrides)
|
||||||
|
if emit:
|
||||||
|
yield 'config', 'cfg', output_config
|
||||||
|
|
||||||
# If it's not returning None like a normal test function,
|
# If it's not returning None like a normal test function,
|
||||||
# it's generating things, and we need to complete it before setting back the config.
|
# it's generating things, and we need to complete it before setting back the config.
|
||||||
if out is not None:
|
if out is not None:
|
||||||
|
|
Loading…
Reference in New Issue