Макс
по моему опыту, проект, в котором тесты занимают больше пяти минут, это проект, в котором разработчики забивают на тесты :(
(((Sergey(not seresha))
Звучит не очень
Денис
эээ
Денис
пять минут это вообще ни о чём
Денис
даже если интеграционные тесты занимают час, это по-моему вполне себе в пределах нормы
Судзумия
На самом деле, да, тесты на транзакциях это круто
Макс
даже если интеграционные тесты занимают час, это по-моему вполне себе в пределах нормы
не согласен, но не обладаю сейчас достаточной уверенностью чтобы быть готовым спорить на эту тему
Денис
ну, всё зависит от частного случая разумеется
Денис
скажем, если интеграционные тесты только на найтли-билде запускаются, то вообще пофигу, сколько они там занимают
Денис
хоть час, хоть два, хоть три
Денис
но если ты хочешь прям на каждый коммит их запускать, то это уже другая история :)
(((Sergey(not seresha))
Ну хз
(((Sergey(not seresha))
А если несколько разных баз юзаешь
(((Sergey(not seresha))
То транзакции уже не зайдут
Макс
скажем, если интеграционные тесты только на найтли-билде запускаются, то вообще пофигу, сколько они там занимают
"интеграционные" в данном случае - термин, который плохо отражает суть тестов, но я его использую, потому что для проведения этих тестов я использую встроенный в cargo механизм, который называется integration tests. Если бы я нашёл, как в diesel делать мок соединения с базой данных, я бы эти же тесты интеграционными не делал
(((Sergey(not seresha))
Тут такое
(((Sergey(not seresha))
Интеграционные самые высокоуровневые
Макс
но если ты хочешь прям на каждый коммит их запускать, то это уже другая история :)
более того, я бы вот эти конкретно тесты хочу запускать в процессе разработки постоянно, не "на ночь", а раз в 2-3 минуты например
(((Sergey(not seresha))
Они должны по сути use cases прогонять
Макс
Интеграционные самые высокоуровневые
Верно. Поэтому я и не считаю, что тут термин "интеграционные" хорошо подходит
Макс
Но так как в cargo уже есть технический термин integration tests и конфиг именно для них, то приходится использовать этот термин там, где он не очень подходит, просто чтобы использовать эту техническую возможность
(((Sergey(not seresha))
Они обычно достаточно долго идут
(((Sergey(not seresha))
Хотя и их намного меньше остальных
Макс
Это уже второй случай со мной, когда моё мнение о том, что такое "интеграционный" тест не совпадает с мнением разработчиков фреймворка :) так что терминология подводит
Денис
ну что я могу сказать.. cargo test судя по всему не умеет в хуки
Денис
поэтому если нужно побыстрее, то дизелевский вариант норм выглядит
Макс
Альтернативный вопрос: тестировал ли кто-нибудь приложения на diesel, и делал ли моки для connection?
Макс
(Автор diesel в его чате сказал мне что это невозможно, но мало ли)
Судзумия
Ты не веришь автору дизеля? :)
Денис
а есть примеры мокабельных оэрэмов?
Денис
безотносительно языка
Денис
мне просто интересно, как это чисто принципиально можно сделать
Денис
по факту надо запилить мок-бэкэнд же?
doc
А вы не пробовали создать базу, накатить схему и каждый тест в отдельной транзакции запустить?
doc
Работает очень удобно, мокать не надо
Денис
ну он так и хочет делать, я так понимаю
Судзумия
Уже предлагали
Судзумия
Но ему чот не нравится
Денис
ему не нравится, что cargo test не может засетапить базу, и поэтому каждый тест вынужден делать это заново
Денис
вообще можно просто скрипт сделать, который всё сетапит
Денис
и вызывать его
Денис
типа setup.sh && cargo test
doc
Как в Джанго))
Денис
ну а чё бы и нет
Денис
вот так сходу не вижу минусов никаких
doc
А в тестах раста есть какой-то testrunner?
doc
Как-то их можно кастомизировать?
Anonymous
на rust возможно как-нибудь написать компилятор? например, вот написал я там brainfuck и как мне сделать так чтобы боло типа rustc build main.rs только для bf например bfc build main.bf
Anonymous
для интереса
Anonymous
если такое вообще возможно
Дмитрий
если такое вообще возможно
Такое возможно на любом языке. Даже на js
Сергей
Rust - язык общего назначения. На нём можно написать практически что угодно
Anonymous
а где можно найти статью или репозиторий какой-нибудь?
Anonymous
просто найти не могу
分解物質
(((Sergey(not seresha))
Там много вариантов по написанию есть
doc
Раст написан на расте, так что 100% можно))
(((Sergey(not seresha))
Можно под llvm писать
(((Sergey(not seresha))
Это проще
(((Sergey(not seresha))
Статей полно
Судзумия
А раст на расте это rustc
(((Sergey(not seresha))
Можно поискать олдовую версию на ocaml
分解物質
А раст на расте это rustc
ну там не только rust в компиляции участвует
doc
А что ещё?
分解物質
C++
分解物質
на котором написан llvm
(((Sergey(not seresha))
В самой репе компилятора тоже есть код на плюсах
(((Sergey(not seresha))
Но мб legacy
Денис
господи зачем там плюсы
Денис
Денис
на котором написан llvm
из этого таки не следует, что раст написан с использованием плюсов
分解物質
из этого таки не следует, что раст написан с использованием плюсов
а я сказал только "в компиляции rust не только rust участвует"
Денис
с тезисом в таком виде я тоже не соглашусь
Денис
я бы сказал, что вообще не имеет значения, на чём написан llvm
Денис
особенно если плюсовый код не компилируется в процессе компиляции растокода
Денис
(а он не компилируется)
Cuno
(((Sergey(not seresha))
Llvm тоже компилирует
Денис
да, но llvm не компилирует плюсовый код