clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
2019-02-14T02:48:20.037400Z

Чат, привет. А дайте пожта ценный совет что почитать чтобы научиться Java 8, я умею python/clojure теперь вот надо научиться Java на хорошем уровне. Спасибо!

serioga 2019-02-14T19:23:39.038Z

@kuzmin_m Ну как-то не встретилось трудностей https://github.com/serioga/test-protocol-testing

kuzmin_m 2019-02-15T11:03:02.040500Z

@serioga ^^^

serioga 2019-02-15T11:04:55.040700Z

значит просто перечисляешь нужные тесты в каждой реализации, если набор тестов разный

kuzmin_m 2019-02-15T11:05:41.040900Z

набор тестов одинаковый

serioga 2019-02-15T11:05:44.041100Z

и вообще, смотря что за тест он же может и не использовать реализацию

kuzmin_m 2019-02-15T11:05:46.041300Z

разный контекст

kuzmin_m 2019-02-15T11:05:54.041500Z

еще раз 😃

kuzmin_m 2019-02-15T11:05:57.041700Z

есть протокол

kuzmin_m 2019-02-15T11:06:03.041900Z

есть 2 реализации

kuzmin_m 2019-02-15T11:06:21.042100Z

я хочу наложить на реализации некоторые ограничения

kuzmin_m 2019-02-15T11:06:42.042300Z

которые нельзя выразить clojure.spec например

serioga 2019-02-15T11:06:44.042500Z

> я хочу наложить на реализации некоторые ограничения про это ничего не было сказано

kuzmin_m 2019-02-15T11:06:49.042700Z

да

kuzmin_m 2019-02-15T11:07:08.042900Z

т.е. скажем, у меня есть протокол для генерации идентификаторов

kuzmin_m 2019-02-15T11:07:14.043100Z

и там один метод

serioga 2019-02-15T11:07:30.043300Z

я сделал в рамках того, что обсуждалось

kuzmin_m 2019-02-15T11:07:31.043500Z

я хочу, чтобы все его реализации возвращали pos-in?

kuzmin_m 2019-02-15T11:07:55.043700Z

и принимали как параметр пространство в котором нужно генерировать id

kuzmin_m 2019-02-15T11:08:05.043900Z

и это пространство - keyword

kuzmin_m 2019-02-15T11:08:10.044200Z

пока просто

kuzmin_m 2019-02-15T11:08:27.044400Z

а теперь у меня есть более сложный протокол

kuzmin_m 2019-02-15T11:08:56.044600Z

и я хочу проверить, что реализация правильно работает в многопоточном окружении

kuzmin_m 2019-02-15T11:09:05.044800Z

и это уже именно проверки кодом

serioga 2019-02-15T11:09:24.045Z

> и принимали как параметр пространство в котором нужно генерировать id заведи ещё одну динамическую переменную, для пространства генерации айди

kuzmin_m 2019-02-15T11:09:48.045200Z

ты не понял =(

kuzmin_m 2019-02-15T11:10:07.045400Z

вот смотри

kuzmin_m 2019-02-15T11:10:15.045600Z

у тебя есть вилка и розетка

kuzmin_m 2019-02-15T11:10:23.045800Z

электрические

serioga 2019-02-15T11:10:34.046Z

я понял, что у тебя постоянно усложняются условия задачи

kuzmin_m 2019-02-15T11:10:37.046200Z

есть их “протокол” - стандарт

kuzmin_m 2019-02-15T11:11:09.046400Z

и я хочу проверять реализует ли этот стандарт реализацию

kuzmin_m 2019-02-15T11:11:25.046600Z

выдерживает ли розетка ток, указанный в стандарте

kuzmin_m 2019-02-15T11:11:39.046800Z

выдерживает ли она удары молотком

kuzmin_m 2019-02-15T11:11:41.047Z

и т.п.

kuzmin_m 2019-02-15T11:12:20.047200Z

@serioga тесты решают эту задачу? или я неправильный инструмент выбрал?

serioga 2019-02-15T11:12:48.047400Z

я вижу, что вариант с ns-hook позволяет как угодно перековырять поведение тестов и надстроить сверху всё-что угодно. то есть проблему написать любую сложную машинерию не вижу

kuzmin_m 2019-02-15T11:13:26.047600Z

смотри

kuzmin_m 2019-02-15T11:13:33.047800Z

есть ns-hook

serioga 2019-02-15T11:13:37.048Z

программные тесты не решают задачу ударов молотком

kuzmin_m 2019-02-15T11:13:45.048200Z

в нем вызываются несколько тестов

kuzmin_m 2019-02-15T11:14:00.048400Z

и каждый этот тест нужно завернуть в фикстуру

kuzmin_m 2019-02-15T11:14:43.048600Z

или ты предлагаешь как-то так:

(defn test-suite  []
 (*wrapper* test-bar)
 (*wrapper* test-baz))

serioga 2019-02-15T11:18:22.048800Z

я предлагаю написать так, как требует задача но я вижу, что твою задачу я до конца не знаю test-suite нужен только для того, чтобы было идентичное тестирование для обоих реализаций если тестирование не идентичное, то у каждой реализации в ns-hook пишется что-то своё, с использованием тестов из протокольной части

kuzmin_m 2019-02-15T11:19:07.049Z

давай так, у тебя есть время/желание продолжать?

serioga 2019-02-15T11:20:22.049200Z

то есть я просто проверил способ переиспользования тестов реализациями, не более того

serioga 2019-02-15T11:21:48.049400Z

> давай так, у тебя есть время/желание продолжать? ну, только если ты по прежнему видешь какую-то неразрешимую проблему, которую ты хотел бы решить ну и не сейчас, конечно, а вечером или на выходных

serioga 2019-02-15T11:24:09.049600Z

можно даже голосом

kuzmin_m 2019-02-15T11:24:14.049800Z

вопрос остался - да попробую сделать маленький пример чтобы было с чем работать

kuzmin_m 2019-02-15T11:24:22.050Z

вечер - это во сколько?

serioga 2019-02-15T11:27:36.050200Z

после 19 CET

serioga 2019-02-15T11:28:07.050400Z

примерно как в предыдущии дни было

serioga 2019-02-15T11:29:00.050600Z

> попробую сделать маленький пример давай проект на гитхабе, желательно lein based

kuzmin_m 2019-02-15T12:19:08.050800Z

https://github.com/darkleaf/protocol-testing сам протокол, обвязка, тесты еще будут рефакториться, это не предмет вопроса. вопрос в том, как убрать дублирование в тестах + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_fake_test.clj + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_impl_test.clj

serioga 2019-02-15T18:12:34.051Z

тебе как, патч дать или pull request?

serioga 2019-02-15T18:13:57.051200Z

@kuzmin_m ^^^^

kuzmin_m 2019-02-15T21:42:36.051500Z

PR

serioga 2019-02-16T12:12:53.051700Z

@kuzmin_m я попробовал вчера сделать PR, мне прав не хватило

serioga 2019-02-16T12:21:06.051900Z

13:20	Can't Create Pull Request
					Push failed:
					remote: Permission to darkleaf/protocol-testing.git denied to serioga.
					unable to access '<https://github.com/darkleaf/protocol-testing.git/>': The requested URL returned error: 403

kuzmin_m 2019-02-16T13:14:12.052100Z

форкни или патч пришли

kuzmin_m 2019-02-16T20:08:28.052500Z

спасибо, завтра посмотрю как тесты в repl запускаются

serioga 2019-02-16T20:54:31.052700Z

из репла не пробовал :thinking_face:

kuzmin_m 2019-02-17T14:06:19.052900Z

cider что-то не захотел работать с test-ns-hook, Пришлось его заменить на deftest и вызывать в нем test-suit. Спасибо за помощь. Но все равно все криво выклядит. Хочется удобства, поддержки в ide, хотя о чем я) Или просто тесты продублирую или возьму за основу твой вариант.

serioga 2019-02-17T17:28:05.053100Z

звать тесты из тестов, тоже интересная идея 🙂

serioga 2019-02-14T19:24:26.038600Z

один протокол, две реализации, тестируются единым набором тестов

serioga 2019-02-14T19:25:25.039500Z

из некрасивого только упоминание холостого тестирования неймспейса с набором тестов

serioga 2019-02-14T19:26:20.040200Z

самая сложная часть была в ооп, которым я практически не пользуюсь

kuzmin_m 2019-02-14T21:57:25.040300Z

(defn test-suite
  []
  (test-bar)
  (test-baz))
реализацию нужно на кадый тест новую заводить в этом проблема