Add tests to ci

Test pyflix and simulation using pytest.
Fix running the sim in non-tty environment.
Test presence of some essential files in the docs.
This commit is contained in:
Oleg Kalachev
2026-08-28 19:29:40 +03:00
parent a77f213538
commit 68eb523beb
5 changed files with 61 additions and 6 deletions
+1
View File
@@ -1,3 +1,4 @@
pymavlink
docopt
matplotlib
mcap
Executable
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env python3
# Script for testing pyflix and the simulation.
from pytest import approx
from math import isnan, isfinite
import time
from pyflix import Flix
def test():
print('=== Connect...')
flix = Flix(timeout=20)
print('=== Check initial state')
time.sleep(1) # give more time for initial state
assert flix.connected
assert flix.mode == 'STAB'
assert not flix.armed
assert flix.landed
assert isnan(flix.voltage) or flix.voltage == approx(4.2)
assert flix.rates == approx((0, 0, 0), abs=0.01)
assert flix.attitude == approx((1, 0, 0, 0), abs=0.01)
assert flix.attitude_euler == approx((0, 0, 0), abs=0.01)
assert all(m == 0 for m in flix.motors)
assert flix.acc == approx((0, 0, 9.81), abs=0.1)
assert flix.gyro == approx((0, 0, 0), abs=0.01)
assert all(ch == 0 for ch in flix.channels)
print('=== Check console commands')
assert 'Time: ' in flix.cli('time')
assert 'landed: 1' in flix.cli('imu')
print('=== Check parameters')
assert isfinite(flix.get_param('CTL_ATT_P_P'))
flix.set_param('CTL_ATT_P_P', 10.0)
print('=== Additional checks')
assert flix.wait('gyro') == approx((0, 0, 0), abs=0.01)
flix.wait('armed', False)
flix.wait('mode', 'STAB')
flix.wait('motors', lambda motors: not any(motors))
flix.set_armed(True)
flix.wait('armed', True)
flix.set_mode('ACRO')
flix.wait('mode', 'ACRO')
flix.set_mode('AUTO')
flix.wait('mode', 'AUTO')