from gitignore_generator.validator import validator, Validator class TestValidator: def test_validate_empty_content(self): result = validator.validate_content("") assert len(result) == 0 def test_validate_valid_patterns(self): content = "__pycache__\n*.pyc\n*.log" issues = validator.validate_content(content) assert len(issues) == 0 def test_validate_trailing_slash(self): content = "dir/" issues = validator.validate_content(content) assert len(issues) > 0 assert any(i.issue_type == "trailing_slash" for i in issues) def test_validate_backslash_escape(self): content = "pattern\\n" issues = validator.validate_content(content) assert len(issues) > 0 assert any(i.issue_type == "invalid_escape" for i in issues) def test_validate_duplicate_patterns(self): content = "__pycache__\n__pycache__" issues = validator.validate_content(content) assert len(issues) > 0 assert any(i.issue_type == "duplicate" for i in issues) def test_validate_wildcard_usage(self): content = "a/**/b" issues = validator.validate_content(content) assert len(issues) > 0 assert any(i.issue_type == "double_star" for i in issues) def test_is_valid_valid(self): assert validator.is_valid("__pycache__\n*.pyc") def test_is_valid_invalid(self): assert not validator.is_valid("pattern\\n") def test_get_summary(self): content = "__pycache__\n*.pyc" summary = validator.get_summary(content) assert summary["valid"] assert summary["errors"] == 0 assert summary["warnings"] == 0 def test_validate_pattern(self): issue = validator.validate_pattern("valid_pattern") assert issue is None def test_validate_pattern_invalid(self): issue = validator.validate_pattern("pattern\\n") assert issue is not None assert issue.severity == "error" def test_init_validator(self): v = Validator() assert v.issues == [] assert v.warnings == []