Bugfixes in the glossary protection guard: allow changes toward protected glossary terms, but deny changes away from protected terms

This commit is contained in:
2026-04-22 11:04:35 -05:00
parent 9afb5c5a4e
commit 183f8ba31d
5 changed files with 124 additions and 7 deletions

View File

@@ -11,6 +11,9 @@ def _vocabulary():
- "Greenfield"
category: pc
summary: "Hrank Greenfield is a player character."
- name: "Popov"
category: npc
summary: "Popov is an allied NPC."
"""
)
return ProtectedVocabulary.from_glossary(glossary)
@@ -22,22 +25,46 @@ def test_protection_blocks_replacing_protected_term():
assert vocabulary.violation_reason("Hrank moves.", "Frank moves.") is not None
def test_protection_blocks_replacing_possessive_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Popov's exhausted.", "Pawpaw's exhausted.") is not None
def test_protection_blocks_lowercasing_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Hrank moves.", "hrank moves.") is not None
def test_protection_blocks_noncanonical_uppercase_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Popov moves.", "POPOV moves.") is not None
def test_protection_allows_canonical_capitalization():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("hrank moves.", "Hrank moves.") is None
def test_protection_allows_correction_toward_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Pawpaw moves.", "Popov moves.") is None
def test_protection_allows_possessive_correction_toward_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Pawpaw's exhausted.", "Popov's exhausted.") is None
def test_protection_allows_punctuation_around_protected_term():
vocabulary = _vocabulary()
assert vocabulary.violation_reason("Hrank, moves.", "Hrank. Moves.") is None
assert vocabulary.violation_reason("Popov, moves.", "Popov. Moves.") is None
def test_protection_does_not_match_terms_inside_larger_words():