diff --git a/sso-mfa/k8s/keycape/test_adapter_source_closure.py b/sso-mfa/k8s/keycape/test_adapter_source_closure.py index d44ac8b..6b6da3d 100644 --- a/sso-mfa/k8s/keycape/test_adapter_source_closure.py +++ b/sso-mfa/k8s/keycape/test_adapter_source_closure.py @@ -48,9 +48,19 @@ print(json.dumps({'loaded': sorted(set(local)), 'pinned': sorted(pinned)})) KNOWN_FAILING = set() +def _probe_env(): + # The probe runs with cwd=ROOT, so a relative PYTHONPATH entry would stop + # pointing where the caller meant it to; resolve entries against our cwd. + env = dict(os.environ) + if env.get('PYTHONPATH'): + env['PYTHONPATH'] = os.pathsep.join( + str(Path(p).resolve()) for p in env['PYTHONPATH'].split(os.pathsep) if p) + return env + + def probe(adapter): out = subprocess.run([sys.executable, '-c', PROBE, str(ROOT), str(REPO), adapter], - capture_output=True, text=True, env=dict(os.environ), cwd=ROOT) + capture_output=True, text=True, env=_probe_env(), cwd=ROOT) if out.returncode: raise AssertionError(f'{adapter} probe failed: {out.stderr[-2000:]}') return json.loads(out.stdout.strip().splitlines()[-1])