import os, pathlib, subprocess, tempfile repo=pathlib.Path(__file__).resolve().parents[1] with tempfile.TemporaryDirectory() as tmp: p=pathlib.Path(tmp); target=p/'telegraf'; target.mkdir() (target/'bcachefs.sh').write_text('original') subprocess.run([str(repo/'install.sh'),str(target)],check=True,stdout=subprocess.DEVNULL) assert (next(target.glob('bcachefs-backup.*'))/'bcachefs.sh').read_text()=='original' for script in repo.glob('bcachefs*.sh'): assert (target/script.name).resolve()==script.resolve() subprocess.run([str(repo/'install.sh'),str(target)],check=True) assert len(list(target.glob('bcachefs-backup.*')))==1 stub=p/'kubectl'; stub.write_text('''#!/bin/bash if [[ $1 == get ]]; then printf '%s\\n' "${MOCK_PODS-brunner-ninja-test}" else exit "${MOCK_CP_STATUS:-0}" fi '''); stub.chmod(0o755) log=p/'test log'; log.write_text('test') env=dict(os.environ,PATH=tmp+':'+os.environ['PATH'],TMPDIR=tmp) def run(extra={}): return subprocess.run([str(repo/'paste_log.sh'),str(log)],env=env|extra,text=True,capture_output=True) result=run(); assert result.returncode==0 and result.stdout.startswith('https://brunner.ninja/pastes/'),result result=run({'MOCK_CP_STATUS':'7'}); assert result.returncode==7 and not result.stdout,result for pods in ['', 'brunner-ninja-a\nbrunner-ninja-b']: result=run({'MOCK_PODS':pods}); assert result.returncode==1 and not result.stdout,result assert not list(p.glob('*.log')) result=subprocess.run(['bash','-c','source "$1"; paste_log /nonexistent; echo survived','bash',str(repo/'paste_log.sh')],capture_output=True,text=True) assert result.returncode==0 and result.stdout.strip()=='survived' print('PASS: installer backup/idempotency, upload success/failure, pod selection, cleanup, sourced-shell survival')