Index: gc_core/py/lang_core/tests_core.py ================================================================== --- gc_core/py/lang_core/tests_core.py +++ gc_core/py/lang_core/tests_core.py @@ -62,10 +62,11 @@ def setUpClass (cls): gc_engine.load() cls._zError = re.compile(r"\{\{.*?\}\}") cls._zRuleEnd = re.compile(r"_a\d+_\d+$") cls._aTestedRules = set() + cls._oSpellChecker = gc_engine.getSpellChecker() def test_parse (self): zOption = re.compile("^__([a-zA-Z0-9]+)__ ") spHere, _ = os.path.split(__file__) spfParsingTest = os.path.join(spHere, "gc_test.txt") @@ -142,17 +143,19 @@ sListErr += " * {sLineId} / {sRuleId} at {nStart}:{nEnd}\n".format(**dErr) lAllSugg.append("|".join(dErr["aSuggestions"])) self._aTestedRules.add(dErr["sRuleId"].rstrip("0123456789")) # test messages if False: - aMsgErrs = gc_engine.parse(purgeMessage(dErr["sMessage"])) - if aMsgErrs or "" in dErr["sMessage"] or "" in dErr["sMessage"]: - aSelectedErrs = [ dMsgErr for dMsgErr in sorted(aMsgErrs, key=lambda d: d["nStart"]) if self._zRuleEnd.sub("", dMsgErr["sRuleId"]) != self._zRuleEnd.sub("", dErr["sRuleId"]) ] - if aSelectedErrs: - print("\n# Error in: <" + dErr["sMessage"] + ">\n " + dErr["sLineId"] + " / " + dErr["sRuleId"]) - for dMsgErr in aSelectedErrs: - print(" error: {sLineId} / {sRuleId} at {nStart}:{nEnd}".format(**dMsgErr)) + aGramErrs = gc_engine.parse(purgeMessage(dErr["sMessage"])) + aGramErrs = [ dMsgErr for dMsgErr in sorted(aGramErrs, key=lambda d: d["nStart"]) if self._zRuleEnd.sub("", dMsgErr["sRuleId"]) != self._zRuleEnd.sub("", dErr["sRuleId"]) ] + aSpellErrs = self._oSpellChecker.parseParagraph(re.sub("‹\\w+›", lambda m: " " * len(m.group(0)), dErr["sMessage"])) + if aGramErrs or aSpellErrs or "" in dErr["sMessage"] or "" in dErr["sMessage"]: + print("\n# Error in: <" + dErr["sMessage"] + ">\n " + dErr["sLineId"] + " / " + dErr["sRuleId"]) + for dMsgErr in aGramErrs: + print(" error: {sLineId} / {sRuleId} at {nStart}:{nEnd}".format(**dMsgErr)) + for dMsgErr in aSpellErrs: + print(" spelling mistake: <{sValue}> at {nStart}:{nEnd}".format(**dMsgErr)) return sRes, sListErr, "|||".join(lAllSugg) def _getExpectedErrors (self, sLine): sRes = " " * len(sLine) for i, m in enumerate(self._zError.finditer(sLine)):