fix(ci): bound critical alarm tests
Build & Deploy PluriWave / Build APK + AAB release (push) Has been cancelled
Build & Deploy PluriWave / Análisis de código (push) Has been cancelled

This commit is contained in:
2026-05-28 23:54:18 +02:00
parent cf994757a4
commit 8f77550a05
2 changed files with 42 additions and 6 deletions
+28 -4
View File
@@ -30,11 +30,35 @@ jobs:
- name: Analizar código - name: Analizar código
run: flutter analyze --no-fatal-infos --no-fatal-warnings run: flutter analyze --no-fatal-infos --no-fatal-warnings
- name: Ejecutar tests criticos - name: Ejecutar tests críticos
run: | run: |
flutter test \ python3 - <<'PY'
test/estado/estado_alarmas_test.dart \ import subprocess
test/servicios/servicio_programacion_alarmas_test.dart import sys
tests = [
'test/servicios/servicio_programacion_alarmas_test.dart',
'test/estado/estado_alarmas_test.dart',
]
for test_path in tests:
cmd = [
'flutter',
'test',
'--concurrency=1',
'--timeout=60s',
'--reporter=expanded',
test_path,
]
print('$ ' + ' '.join(cmd), flush=True)
try:
result = subprocess.run(cmd, timeout=180)
except subprocess.TimeoutExpired:
print(f'ERROR: timeout ejecutando {test_path}', file=sys.stderr, flush=True)
sys.exit(124)
if result.returncode != 0:
sys.exit(result.returncode)
PY
build: build:
name: Build APK + AAB release name: Build APK + AAB release
+14 -2
View File
@@ -22,6 +22,8 @@ void main() {
android: android, android: android,
iniciarAutomaticamente: false, iniciarAutomaticamente: false,
); );
addTearDown(estado.dispose);
addTearDown(android.dispose);
await estado.guardarAlarma( await estado.guardarAlarma(
const AlarmaMusical( const AlarmaMusical(
id: 'a1', id: 'a1',
@@ -55,6 +57,8 @@ void main() {
android: android, android: android,
iniciarAutomaticamente: false, iniciarAutomaticamente: false,
); );
addTearDown(estado.dispose);
addTearDown(android.dispose);
await estado.guardarAlarma( await estado.guardarAlarma(
AlarmaMusical( AlarmaMusical(
id: 'pre1', id: 'pre1',
@@ -80,13 +84,16 @@ void main() {
}); });
test('finalizar diaria calcula siguiente dia y limpia snooze', () async { test('finalizar diaria calcula siguiente dia y limpia snooze', () async {
final android = FakePuertoAlarmasAndroid();
final estado = EstadoAlarmas( final estado = EstadoAlarmas(
servicio: ServicioAlarmas( servicio: ServicioAlarmas(
reloj: () => DateTime(2026, 5, 25, 7, 31), reloj: () => DateTime(2026, 5, 25, 7, 31),
), ),
android: FakePuertoAlarmasAndroid(), android: android,
iniciarAutomaticamente: false, iniciarAutomaticamente: false,
); );
addTearDown(estado.dispose);
addTearDown(android.dispose);
await estado.guardarAlarma( await estado.guardarAlarma(
AlarmaMusical( AlarmaMusical(
id: 'a2', id: 'a2',
@@ -108,13 +115,16 @@ void main() {
}); });
test('finalizar unica la desactiva y queda sin proxima ejecucion', () async { test('finalizar unica la desactiva y queda sin proxima ejecucion', () async {
final android = FakePuertoAlarmasAndroid();
final estado = EstadoAlarmas( final estado = EstadoAlarmas(
servicio: ServicioAlarmas( servicio: ServicioAlarmas(
reloj: () => DateTime(2026, 5, 25, 7, 31), reloj: () => DateTime(2026, 5, 25, 7, 31),
), ),
android: FakePuertoAlarmasAndroid(), android: android,
iniciarAutomaticamente: false, iniciarAutomaticamente: false,
); );
addTearDown(estado.dispose);
addTearDown(android.dispose);
await estado.guardarAlarma( await estado.guardarAlarma(
AlarmaMusical( AlarmaMusical(
id: 'a3', id: 'a3',
@@ -193,4 +203,6 @@ class FakePuertoAlarmasAndroid implements PuertoAlarmasAndroid {
@override @override
Future<bool> solicitarPermisoPantallaCompleta() async => true; Future<bool> solicitarPermisoPantallaCompleta() async => true;
Future<void> dispose() => _eventos.close();
} }