"""Portable runtime contract tests; fake child responses never contact NMI.""" import json import subprocess from pathlib import Path import pytest import redmine_ticket_nmi as bridge def fake_cli(tmp_path): p = tmp_path / 'space dir' / 'nmi' p.parent.mkdir() p.write_text('true,'mode'=>'dev','env_file'=>getenv('NMI_ENV_FILE'),'endpoint'=>'https://fixture.example.test','problem'=>null]); } elseif (in_array('cs-brief',$argv,true)) { echo "=== NMI CS BRIEF === fixture only\\n"; } else { echo json_encode(['fixture'=>true]); } ''') monkeypatch.setenv('NMI_CLI', str(cli)) monkeypatch.setenv('NMI_ENV_FILE', str(env_file)) monkeypatch.setenv('NMI_MODE', 'dev') monkeypatch.setenv('BRIDGE_TEST_LOG', str(log)) result = bridge.brief_for_issue({'id':1}, [{'type':'item_no','value':'200000001'}]) assert result['ok'] and result['item_history']['ok'] calls = [json.loads(line) for line in log.read_text().splitlines()] assert len(calls) == 3 for call in calls: assert '--mode=dev' in call assert '--env-file='+str(env_file) in call assert '--item-no=200000001' in calls[-1]