Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compile-time проверка сообщений message_source #43

Open
avbelyaev opened this issue Dec 9, 2017 · 2 comments
Open
Assignees

Comments

@avbelyaev
Copy link
Member

avbelyaev commented Dec 9, 2017

Есть проблема с тем что где-то, где мы используем message_source в стиле m[lang]['some_taxt]`, может быть неправильно указан ключ (taxt vs text) из message_source'а. но эта проверка будет только в рантайме. И это может быть слишком поздно.

По соглашению, что все сообщения формируются только в модулях handlers и service, необходимо написать простой скрипт, который:

  • загрузил бы в себя все сообщения из мапы message_source в 2 мапы - русский и англ язык.

    • другими словами - знал бы все возможные ключи в этой мапе.
    • еще болле другими словами - найти в тексте файла все записи вида 'x':'y' (учесть что пробелов может быть сколько угодно и кавычки могут быть двойными. (как вариант насчет кавычек - можем все договориться использовать одинарные)) и достать x. проверить что таких иксов - 2 штуки. по кол-ву языков. если нашелся только 1 - говорить что это за ключ и кидать ошибку.
  • находил бы все упоминания message_source[a]['b'] в текстах всех файлов из 2х модулей, извлекал b и проверял бы, содержится ли эта строка среди извлеченных ранее ключей messge_source'а. если не содержится - говорить какого нет и кидать ошибку.

Таким образом мы обезопасим себя от поиска по несуществующему ключу и возможный косяк в рантайме. Потом скрипт будет добавлен в процесс деплоя имейджа.

@avbelyaev
Copy link
Member Author

если сложно сделать на баше, как вариант, это можно сделать прям на питоне. тогда первый пункт вообще уже решен считай, а второй делается за 2 строчки. надо поместить это в тест, чтобы за нас этот скрипт гонял трэвис (!).

возможно, это даже более предпочтительный вариант!

@avbelyaev avbelyaev reopened this Dec 9, 2017
@avbelyaev
Copy link
Member Author

avbelyaev commented Dec 17, 2017

UPD: Проверять надо все проектные файлы по паттерну, ибо message_source разросся и обращения кнему, соответственно, тоже. Хотя кто это будет делать? конечно, же, никто

И проверять надо не только наличие ключей, но еще и сами сообщения на валидность markdown. ибо невалидный маркдаун выливается в 400 bad rq. соотвественно в каждом сообщении, где есть маркдаун, должно быть четное число его элементов

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants