Files
telegraf-bcachefs-input/tests/test_helpers.py
T

30 lines
1.7 KiB
Python

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')