Add test files
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-01 15:10:14 +00:00
parent ff31ce9958
commit f340b0071f

122
tests/test_parser.py Normal file
View File

@@ -0,0 +1,122 @@
"""Tests for cron expression parsing and validation."""
import pytest
from cronparse.parser import validate_cron, parse_cron, parse_field_value
class TestValidateCron:
"""Tests for validate_cron function."""
def test_valid_every_minute(self):
"""Test valid every minute expression."""
is_valid, error = validate_cron("* * * * *")
assert is_valid is True
assert error is None
def test_valid_daily_at_nine_am(self):
"""Test valid daily at 9 AM expression."""
is_valid, error = validate_cron("0 9 * * *")
assert is_valid is True
assert error is None
def test_valid_every_five_minutes(self):
"""Test valid every 5 minutes expression."""
is_valid, error = validate_cron("*/5 * * * *")
assert is_valid is True
assert error is None
def test_valid_with_command(self):
"""Test valid expression (without command - croniter doesn't parse commands)."""
is_valid, error = validate_cron("0 0 * * *")
assert is_valid is True
assert error is None
def test_invalid_expression(self):
"""Test invalid cron expression."""
is_valid, error = validate_cron("invalid expression")
assert is_valid is False
assert error is not None
def test_invalid_minute_field(self):
"""Test invalid minute field."""
is_valid, error = validate_cron("60 * * * *")
assert is_valid is False
def test_invalid_hour_field(self):
"""Test invalid hour field."""
is_valid, error = validate_cron("* 25 * * *")
assert is_valid is False
class TestParseCron:
"""Tests for parse_cron function."""
def test_parse_every_minute(self):
"""Test parsing every minute expression."""
is_valid, result = parse_cron("* * * * *")
assert is_valid is True
assert result["minute"] == "*"
assert result["hour"] == "*"
assert result["day"] == "*"
assert result["month"] == "*"
assert result["day_of_week"] == "*"
def test_parse_daily_at_nine_am(self):
"""Test parsing daily at 9 AM expression."""
is_valid, result = parse_cron("0 9 * * *")
assert is_valid is True
assert result["minute"] == "0"
assert result["hour"] == "9"
def test_parse_with_step(self):
"""Test parsing expression with step values."""
is_valid, result = parse_cron("*/15 * * * *")
assert is_valid is True
assert result["minute"] == "*/15"
def test_parse_with_range(self):
"""Test parsing expression with range values."""
is_valid, result = parse_cron("0 9-17 * * *")
assert is_valid is True
assert result["hour"] == "9-17"
def test_parse_with_command(self):
"""Test parsing expression with command."""
is_valid, result = parse_cron("0 0 * * * /usr/bin/backup")
assert is_valid is True
assert result["command"] == "/usr/bin/backup"
def test_invalid_expression_returns_false(self):
"""Test that invalid expression returns False."""
is_valid, result = parse_cron("invalid")
assert is_valid is False
assert "error" in result
class TestParseFieldValue:
"""Tests for parse_field_value function."""
def test_parse_asterisk(self):
"""Test parsing asterisk value."""
result = parse_field_value("minute", "*")
assert result == ["*"]
def test_parse_single_value(self):
"""Test parsing single value."""
result = parse_field_value("minute", "5")
assert result == [5]
def test_parse_comma_separated(self):
"""Test parsing comma-separated values."""
result = parse_field_value("minute", "5,10,15")
assert result == [5, 10, 15]
def test_parse_range(self):
"""Test parsing range."""
result = parse_field_value("hour", "9-17")
assert result == [9, 10, 11, 12, 13, 14, 15, 16, 17]
def test_parse_step(self):
"""Test parsing step value."""
result = parse_field_value("minute", "*/5")
assert result == ["*/step:5"]