Маjко
server::session::tests::test_insert_session
Макс
Разделение на модули, потом test_smth
это да, но очень быстро разрастается например, когда я тестирую функцию do_something, и именно в этом тесте у неё параметр some_parameter должен быть равен 500, и тест проверяет, что результат именно такой... такой шаблон очень легко может порваться
Макс
но разделение на модули иерархические понял, хорошая идея
Cat
юнит тесты должны находится в том модуле, функциональность которого они тестируют
Cat
кстати, табличные тесты в расте популярны?
Cat
услышал тут от гоферов, что у них модно
Макс
юнит тесты должны находится в том модуле, функциональность которого они тестируют
сорян, не уточнил, у меня практически все тесты сейчас интеграционные, потому что они связку Rust+Postgresql тестируют — без проверки того, что код соответствует SQL-схеме они бессмысленные
Маjко
with_paramerer_500
Или же ты можешь объединить все что тестирует этот параметр в один тест, и в нем сделать всё
Макс
выше тут обсуждал, как именно сделать такие тесты, это оказалось единственным нормальным подходом
Маjко
Чем это лучше, чем класть их в tests/? Сори если пропустил
Макс
Чем это лучше, чем класть их в tests/? Сори если пропустил
чтобы провести тесты, нужно принудительно прогнать миграции на тестовой базе. Единственный способ это сделать — положить это в build.rs тестового crate
Макс
собственно, по образцу того, как тесты для diesel написаны
Маjко
Понял
Маjко
А ты смотрел на альтернативные дефолтному тестовые фреймворки?
Маjко
Я точно видел что-то с init/destroy семантикой
Макс
А ты смотрел на альтернативные дефолтному тестовые фреймворки?
нет, даже не задумывался об их существовании. Обычно если такая штука включена в язык, то альтернативы всегда в очень унылом состоянии, не хочется подписываться на мертворождённую технологию (
Макс
Хотя надо будет посмотреть в какой-то момент, спасибо за идею.
Макс
Но это как альтернативные cargo менеджеры пакетов смотреть — чисто теоретически, что-то должно быть, но зачем?
Cat
я правильно понял, что нужен setup+teardown? тут есть что-то https://medium.com/@ericdreichert/test-setup-and-teardown-in-rust-without-a-framework-ba32d97aa5ab
Маjко
нет, даже не задумывался об их существовании. Обычно если такая штука включена в язык, то альтернативы всегда в очень унылом состоянии, не хочется подписываться на мертворождённую технологию (
По моему опыту, всё строго наоборот В гошке так себе встроенные тесты, там даже ассертов нет нормальных, в питоне тоже все тесты на сторонних либах пишут, в Java и прочих -- junit, сторонняя либа
Маjко
Раст -- первый язык на моей памяти с более-менее адекватным встроенным тестфреймворком (для простых вещей)
Макс
По моему опыту, всё строго наоборот В гошке так себе встроенные тесты, там даже ассертов нет нормальных, в питоне тоже все тесты на сторонних либах пишут, в Java и прочих -- junit, сторонняя либа
Оговорился, если оно встроенное и приемлемого качества. В го и менеджер пакетов есть, вроде бы - но при этом без лока версий и в результате все (кроме внутренней разработки гугла) химичят с альтернативными тулзами и переопределением $GOPATH
Макс
я правильно понял, что нужен setup+teardown? тут есть что-то https://medium.com/@ericdreichert/test-setup-and-teardown-in-rust-without-a-framework-ba32d97aa5ab
нет, не совсем. Нужен общий setup на все тесты: прогонять миграции в postgresql перед каждым юнит тестом это штука, которая не скейлится
Денис
слушайте, а build.rs не запускается при тестах?
Денис
хм
Денис
нет
Денис
только на этапе build
Маjко
только на этапе build
В CI это суть одно и то же
Денис
тоже верно, но просто получится, что при обычном билде всё тоже подготовится
Денис
транзакции там всяческие и т.п.
Денис
всё-таки в этом плане я бы сказал отдельный крейт получше будет
Денис
кто-нибудь в курсе, токио для futures 0.2 починили, или таки ждут 0.3 ?
qthree
futures 0.2 никто не использует
qthree
0.2 (context в аргументах к poll), Pin, impl Trait, перенос футур в std. Не будут же все 4 раза подряд всё переписывать.
Денис
я хз, собирались ли, но feature там есть такой ваще я писал reverse proxy с back pressure, и это такой жопой оказалось, и меня так заебало писать бойлерплейт, что я решил подождать, пока это всё дело допилят нормально, с #[async] и прочим в результате выпал на пару месяцев из жизни токио, и всё, теперь ничего не понимаю, что там происходит )
Alexander
Rust чем-то напоминает J, если там на месяц прервался - то надо вспоминать всё опять.
Денис
дык не во вспоминать же дело
Денис
а в том, что некоторые вещи меняются очень быстро
Судзумия
Ты уверен, что тебе тут нужно находиться?
Денис
Хуя
Судзумия
Забанил
Денис
Гоферы атакуют?
Cat
а что там было?
Max
Поток рандомных стикеров и гифок
Cat
а, скукотища
Маjко
Мде, после рефакторинга и перепила мапа стала, мягко говоря, не такой быстрой
Маjко
Хуево
Маjко
А, не, это я с бенчами накосячил
Маjко
Всё норм
Маjко
H I G H P E R F O R M A N C E
Денис
обошёл плюсы?
Маjко
обошёл плюсы?
Предстоит выяснить, я еще не сделал стандартные маповские API чтобы интегрировать в k-nukleotide
Маjко
Но я обошел IndexMap (в 2-5 раз в зависимости от данных и типа мапы)
Маjко
Так что скорее всего и кресты тоже
Маjко
Если какой-нибудь доброход сделает сишную либу с крестовой мапой, чтобы можно было подбиндить, то прямо в бенчи интегрирую
Маjко
Я просто явно накосячу с максимально грамотной и честной настройкой темплейта
Маjко
Кстати, есть способ разнести бенчи по категориям, чтобы они не одной намешанной кучей сваливались в stdout, а по типу данных и типу бенча сортировались с каким-нибудь текстовым саммари?
Маjко
Ну и вообще текстовые аннотации к бенчам было бы неплохо и процентное отношение к бейзлайну чтобы показывалось
Маjко
Мб есть либы?
պլհկ
cargo benchcmp?
Vladimir
criterion-rs
Маjко
cargo benchcmp?
Не, это вообще не в ту степь
Маjко
Dårk
восхитительно! чтобы отдебажить свою растаманскую реализацию протокола, пришлось написать плагин для wireshark. но оно того стоило. всем Lua, мужики! 🌚
Vladimir
А на расте не пробовал написать?
Маjко
Да, нехуй писать на луа Сделал бы биндинги к плагину wireshark или транспилер Rust->Lua Че как не мужик
Vladimir
+
Kerrigan
Переписал бы wireshark на расте*
сначала гуи-тулкит
Marat
сначала гуи-тулкит
Ну его бы в процессе как раз и написали бы
Dårk
https://wiki.wireshark.org/Development/Translations Here you will find some explanations why it might not be a good idea to translate Wireshark into any other language (than english).
Dårk
тогда уж транспайлер Rust -> english.
LexsZero
у RIIR есть лого по аналогии с RESF?