Счётчик абзацев, вернувшихся на языке оригинала: упражнения вида [2] модель не переводит
This commit is contained in:
@@ -132,6 +132,32 @@ def test_junk_translation_falls_back_to_original(tmp: Path):
|
||||
assert "Второй абзац" in result, "нормальный перевод должен остаться"
|
||||
|
||||
|
||||
def test_untouched_paragraphs_are_counted(tmp: Path):
|
||||
"""Абзац, вернувшийся по-английски, доля кириллицы по документу не ловит:
|
||||
у Страуструпа так осталось 182 упражнения из 10151 блока."""
|
||||
src = tmp / "book.html"
|
||||
en = ("Expanding on what you have learned, write a program that lists the "
|
||||
"instructions for a computer to find the upstairs bedroom. ") * 2
|
||||
ru_src = ("Этот абзац достаточно длинный, чтобы попасть под проверку языка "
|
||||
"и быть переведённым как положено. ") * 2
|
||||
src.write_text("\n".join(["<h1>Chapter</h1>", "<p>%s</p>" % en, "<p>%s</p>" % en]),
|
||||
encoding="utf-8")
|
||||
chapters = t.split_chapters(t.parse_blocks(src))
|
||||
trans = tmp / "translations"
|
||||
trans.mkdir()
|
||||
(trans / "chapter_000_translated.json").write_text(json.dumps(
|
||||
{"number": 0, "paragraphs": ["Глава", en, ru_src]}, ensure_ascii=False),
|
||||
encoding="utf-8")
|
||||
|
||||
out = tmp / "out.html"
|
||||
import io, contextlib
|
||||
buf = io.StringIO()
|
||||
with contextlib.redirect_stdout(buf):
|
||||
t.rebuild(src, chapters, tmp, out)
|
||||
report = buf.getvalue()
|
||||
assert "осталось на языке оригинала: 1" in report, report
|
||||
|
||||
|
||||
def test_workdir_belongs_to_one_book(tmp: Path):
|
||||
"""Имена chapter_NNN.json у всех книг одинаковы: чужой workdir склеит
|
||||
перевод одной книги с текстом другой."""
|
||||
@@ -183,6 +209,7 @@ if __name__ == "__main__":
|
||||
test_language_detection()
|
||||
for case in (test_split_and_rebuild, test_code_listings_are_left_alone,
|
||||
test_junk_translation_falls_back_to_original,
|
||||
test_untouched_paragraphs_are_counted,
|
||||
test_workdir_belongs_to_one_book, test_stale_chapters_removed,
|
||||
test_verify_output_catches_untranslated):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
|
||||
Reference in New Issue
Block a user