From 1ca145b626eafcbd07fc966c35ab3ef0e77fcadb Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Sun, 1 Feb 2026 03:56:32 +0000 Subject: [PATCH] Initial upload: ErrorFix CLI with rule engine and pattern matching --- tests/unit/test_rules.py | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/unit/test_rules.py diff --git a/tests/unit/test_rules.py b/tests/unit/test_rules.py new file mode 100644 index 0000000..9251367 --- /dev/null +++ b/tests/unit/test_rules.py @@ -0,0 +1,68 @@ +import pytest +from errorfix.rules import Rule + + +class TestRule: + def test_rule_creation(self): + rule = Rule( + id='test-rule', + name='Test Rule', + pattern='TestError: .*', + fix='Fix it', + description='A test rule', + ) + assert rule.id == 'test-rule' + assert rule.name == 'Test Rule' + assert rule.pattern == 'TestError: .*' + assert rule.fix == 'Fix it' + assert rule.description == 'A test rule' + assert rule.severity.value == 'error' + + def test_rule_from_dict(self): + data = { + 'id': 'test-rule', + 'name': 'Test Rule', + 'pattern': 'TestError: .*', + 'fix': 'Fix it', + 'description': 'A test rule', + 'severity': 'warning', + 'language': 'python', + 'tags': ['test', 'example'], + 'priority': 10, + } + rule = Rule.from_dict(data) + assert rule.id == 'test-rule' + assert rule.severity.value == 'warning' + assert rule.language == 'python' + assert rule.tags == ['test', 'example'] + assert rule.priority == 10 + + def test_rule_to_dict(self): + rule = Rule( + id='test-rule', + name='Test Rule', + pattern='TestError: .*', + fix='Fix it', + description='A test rule', + severity='warning', + ) + data = rule.to_dict() + assert data['id'] == 'test-rule' + assert data['severity'] == 'warning' + + def test_rule_with_all_fields(self): + rule = Rule( + id='full-rule', + name=' 'Full Rule', + pattern='FullError: (?P.*)', + fix='Fix {msg}', + description='A rule with all fields', + severity='suggestion', + language='javascript', + tool='node', + tags=['tag1', 'tag2'], + priority=7, + metadata={'extra': 'data'}, + ) + assert rule.tool == 'node' + assert rule.metadata == {'extra': 'data'}