remove infra.md.example, infra.md is the source of truth
This commit is contained in:
72
ayn-antivirus/tests/test_scheduler.py
Normal file
72
ayn-antivirus/tests/test_scheduler.py
Normal file
@@ -0,0 +1,72 @@
|
||||
"""Tests for scheduler."""
|
||||
import pytest
|
||||
from ayn_antivirus.core.scheduler import Scheduler, _cron_to_schedule, _parse_cron_field
|
||||
from ayn_antivirus.config import Config
|
||||
|
||||
|
||||
def test_scheduler_init():
|
||||
config = Config()
|
||||
s = Scheduler(config)
|
||||
assert s is not None
|
||||
assert s.config is config
|
||||
|
||||
|
||||
def test_cron_parse_simple():
|
||||
"""Standard daily-at-midnight expression."""
|
||||
result = _cron_to_schedule("0 0 * * *")
|
||||
assert result["minutes"] == [0]
|
||||
assert result["hours"] == [0]
|
||||
|
||||
|
||||
def test_cron_parse_step():
|
||||
"""Every-5-minutes expression."""
|
||||
result = _cron_to_schedule("*/5 * * * *")
|
||||
assert 0 in result["minutes"]
|
||||
assert 5 in result["minutes"]
|
||||
assert 55 in result["minutes"]
|
||||
assert len(result["minutes"]) == 12
|
||||
|
||||
|
||||
def test_cron_parse_range():
|
||||
"""Specific range of hours."""
|
||||
result = _cron_to_schedule("30 9-17 * * *")
|
||||
assert result["minutes"] == [30]
|
||||
assert result["hours"] == list(range(9, 18))
|
||||
|
||||
|
||||
def test_cron_parse_invalid():
|
||||
"""Invalid cron expression raises ValueError."""
|
||||
with pytest.raises(ValueError, match="5-field"):
|
||||
_cron_to_schedule("bad input")
|
||||
|
||||
|
||||
def test_schedule_scan():
|
||||
config = Config()
|
||||
s = Scheduler(config)
|
||||
# Scheduling should not crash
|
||||
s.schedule_scan("0 0 * * *", "full")
|
||||
s.schedule_scan("30 2 * * *", "quick")
|
||||
# Jobs should have been registered
|
||||
jobs = s._scheduler.get_jobs()
|
||||
assert len(jobs) >= 2
|
||||
|
||||
|
||||
def test_schedule_update():
|
||||
config = Config()
|
||||
s = Scheduler(config)
|
||||
s.schedule_update(interval_hours=6)
|
||||
jobs = s._scheduler.get_jobs()
|
||||
assert len(jobs) >= 1
|
||||
|
||||
|
||||
def test_parse_cron_field_literal():
|
||||
assert _parse_cron_field("5", 0, 59) == [5]
|
||||
|
||||
|
||||
def test_parse_cron_field_comma():
|
||||
assert _parse_cron_field("1,3,5", 0, 59) == [1, 3, 5]
|
||||
|
||||
|
||||
def test_parse_cron_field_wildcard():
|
||||
result = _parse_cron_field("*", 0, 6)
|
||||
assert result == [0, 1, 2, 3, 4, 5, 6]
|
||||
Reference in New Issue
Block a user