George
TL;DR
Andor
мне кажется, нужно все-таки указать степень необходимости теста достоверной реальности. 100% в принципе не достижимо, надо смириться. Вопрос в том - насколько долго можно зайти?
это разные уровни тестирования, мне бы хотелось юнит-тестов о том что то что я пописываю компилируется в то что я ожидаю
Артём
я хочу посмотреть что мне сгенерировала жинжа
А зачем, кстати? Если она гененирует конфиги приложения - то не лучше ли смотреть на то, корректно ли получилось настроенным приложение?
Артём
Понял.
Andor
я не хочу доходить до запуска приложения, я хочу посмотреть чо мне джинжа сгенерирует
Timur
это разные уровни тестирования всё ещё
Жинжу можно тестировать локально - просто запускать наполнение шаблона и смотреть вывод
Timur
Ансибл для этого не нужен вообще
Andor
ну это не то же самое потому что в ансибле дохрена своих фич джинджи и хотелось бы это всё вместе в комплекте проверять
Andor
и сравнивать с тем что я ожидаю увидеть
George
потому что вход для джинджи ПЕРЕМЕННЫЙ
Andor
ну и это даже не про джинджу а вообще
George
от зависит, например, от того, что выплюнет гуголь клауд модуль
George
ваш ход
Andor
например вот у меня у таски написано with_items: ... и я хочу написать тест что у меня будет выполняться столько-то инстансов этих тасков с такими-то параметрами
Andor
от зависит, например, от того, что выплюнет гуголь клауд модуль
верно, и то что он выплюнет можно замокать, весь гугл-клауд для этого мокать не надо
George
ну, я и говорю мокать, но это адища получается - там мокать нужно любые ответы (сакцес, фейлед, разные враианты ответа АПИ) - фу-фу-фу
Andor
замокать вызов соседних тасков - другого уровня задача, для этого не надо мокать весь гугл-клауд
Andor
и даже не вызов соседних тасков, а переменные оттуда приходящие
George
т.е. ты хочешь таски элементарно независимо друг от друга КАЖДУЮ проверять?
Andor
ты уже в конкретику уходишь, я хочу юнит-тестов
Andor
их нет
Andor
ок, едем дальше
Andor
т.е. ты хочешь таски элементарно независимо друг от друга КАЖДУЮ проверять?
могу привести пример как я это делал в папете, но это будет оффтопом
Andor
могу в чяте папета показать, не тут
George
просто я так понимаю, коллегам это не нужно, т.к. они роли молекулой гоняют и у них все хорошо
George
скинь ссылку на него
Andor
в поиске же, ну
George
https://habr.com/ru/post/437216/
George
https://habr.com/ru/post/351974/
George
в поиске же, ну
скинь в личку, ну, же
Andor
да я юзаю молекулу же, слыш
Andor
но это не то чего бы мне хотелось
Timur
Лучше вот: https://habr.com/ru/company/oleg-bunin/blog/431542/
George
это уже третья ссылка. Может запинить?
George
Ты хочешь странного
на самом деле нет, я тоже хочу чего-то подобного, т.к. каждую таску сейчас приходится брать из головы
George
и отлаживать прям на живую
Timur
А какие еще варианты?
Timur
Юнит-тесты есть для модулей. Там они актуальны
George
они не говорят о том, что таска корректно написана
Timur
А для плейбук и ролей все равно решает интеграция
George
они говорят о том, что МОДУЛЬ сам корректно написан
Никита
расскажите за модуль postgresql_table, как корректно задать размер поля в таблице? - name: "Create companies table" postgresql_table: db: {{ DB_NAME }} table: companies columns: - company_prefix character varying 12
George
/на самом деле она отстой/
Andor
Ты хочешь странного
хотеть unit-тестов это странно?
Timur
/на самом деле она отстой/
Спасибо. Ваше мнение очень важно для нас
Timur
хотеть unit-тестов это странно?
Хотеть юнит-тестов для плейбуки или роли - да, странно
George
это вежливый способ сделать - 🖕?
Timur
это вежливый способ сделать - 🖕?
Вас послать правила перечитать?
Timur
Суток хватит?
Timur
почему?
Потому что на уровне запуска плеев все решает интеграция уже
Andor
это всё ещё разные уровни тестирования
Timur
Результат выполнения таски будет сильно зависеть от окружения, инвентаря, используемого конфига ансибла, предыстории тасок, и т.д. и т.п.
Timur
Это как тестировать работу отдельного глаза в отрыве от нервной системы
Andor
Результат выполнения таски будет сильно зависеть от окружения, инвентаря, используемого конфига ансибла, предыстории тасок, и т.д. и т.п.
разумеется, и поэтому я хочу проверять с разными вариантами и видеть что в одном случае я получаю одно, а в другом - другое
Timur
это всё ещё разные уровни тестирования
Вот именно. Есть уровень модулей ансибла. Там юнит-тесты уместны. А на уровне плея - уже нет
Timur
И да, если кто забыл: Ansible - это не язык программирования
Andor
Это как тестировать работу отдельного глаза в отрыве от нервной системы
так юнит-тесты как бы про это и есть, модульное тестирование
George
баш тоже как бы не совсем язык программирования
Timur
Поэтому не нужно пытаться натянуть на него привычную парадигму разработки на ЯВУ
George
только это не мешает на нем скриптовать
Andor
И да, если кто забыл: Ansible - это не язык программирования
https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html
Timur
George
Often the result of a play may depend on the value of a variable, fact (something learned about the remote system), or previous task result. In some cases, the values of variables may depend on other variables. Additional groups can be created to manage hosts based on whether the hosts match other criteria. This topic covers how conditionals are used in playbooks.
Andor
???
по-моему это язык программирования поверх синтаксиса yaml + jinja
George
ну, да, результат плея может зависеть от внешних факторов. Это как бы очевидно
Andor
но раз ты считаешь, что это не делает язык ансибля языком программирования, то ок
Никита
расскажите за модуль postgresql_table, как корректно задать размер поля в таблице? - name: "Create companies table" postgresql_table: db: {{ DB_NAME }} table: companies columns: - company_prefix character varying 12
Timur
по-моему это язык программирования поверх синтаксиса yaml + jinja
Нет, Ансибл - это просто описание неких шагов и состояний на YAML
Timur
YAML - не язык программирования
Никита
Senior YAML Programmer