Size: a a a

2021 February 19

SS

Sergey Sokolov in PiterPy Meetup
Aleksey Nakoryakov
У Фаулера хорошая статья, там и про типы, и про то, как с ними управляться https://martinfowler.com/articles/feature-toggles.html

Рассуждения на эту тему встречал ещё в контексте про trunk based development. Там это идёт в паре с branch by abstraction, насколько помню (на практике не встречал)
https://trunkbaseddevelopment.com/feature-flags/
источник

SS

Sergey Sokolov in PiterPy Meetup
Спасибо!
источник

DB

Dima Boger in PiterPy Meetup
Вот тут ещё можно посмотреть интерфейс гитлаба к Unleash
источник

DB

Dima Boger in PiterPy Meetup
Оно не про код и архитектуру, а скорее про фичи фича-флагов (per-user включение, процентная выкатка, вот это вот всё)
источник
2021 February 20

Б

Боброний in PiterPy Meetup
Не починили 😕
источник

E

Eugene in PiterPy Meetup
Боброний
Не починили 😕
🤷‍♂ печально
источник
2021 February 23

E

Eugene in PiterPy Meetup
Любители тестов, как бы вы написали тест для отлавливания такой ошибки:

OSError: [Errno 18] Invalid cross-device link: '/tmp/tmpursl97uu' -> '/mnt/b/dir_name/file_name'
источник

DB

Dima Boger in PiterPy Meetup
Eugene
Любители тестов, как бы вы написали тест для отлавливания такой ошибки:

OSError: [Errno 18] Invalid cross-device link: '/tmp/tmpursl97uu' -> '/mnt/b/dir_name/file_name'
def test_foo():
   with pytest.raises(OSError) as excinfo:
       foo()
   assert "Errno 18" in str(excinfo.value)
источник

DB

Dima Boger in PiterPy Meetup
ну или прям по регулярочке, если важно проверить и путь
источник

E

Eugene in PiterPy Meetup
Не, суть не в этом, как протестировать случай когда такая ошибка может возникнуть?
источник

E

Eugene in PiterPy Meetup
Вот есть тестовый стенд, как сэмулировать Invalid cross-device link?
источник

E

Eugene in PiterPy Meetup
Типа тест на то, что такой ошибки не будет если есть cross-device файловые операции.
источник

E

Eugene in PiterPy Meetup
В моём случае ошибку пуляют функции rename/replace
источник

DB

Dima Boger in PiterPy Meetup
источник

E

Eugene in PiterPy Meetup
Надо попробовать
источник

DB

Dima Boger in PiterPy Meetup
Вообще мне кажется функциональный тест такого низкого уровня довольно сложно написать
источник

SS

Sergey Sokolov in PiterPy Meetup
А почему в таком тесте не запатчить то место, где такая ошибка может возникнуть, и в патче её зарейзить? 🤔
источник

E

Eugene in PiterPy Meetup
Dima Boger
Вообще мне кажется функциональный тест такого низкого уровня довольно сложно написать
Ну вот нужен эмулятор отдельного устройства с файловой системой.
источник

E

Eugene in PiterPy Meetup
Многие библиотеки используют операцию Path.rename/os.replace, когда делают атомарные операции с файлами, типа из /tmp перенести в dst папку. Я тоже так делал пока код не сломался в случае с использованием GlusterFS и /tmp папкой на локальной файловой системе. И вот сейчас снова наткнулся на эту проблему в одной из библиотек. Тут помогает обычная процедура move file (настоящее копирование файла), у себя я так и сделал и всё стало работать, но люди в библиотеках продолжают делать replace, который не работает с cross-device.
источник

E

Eugene in PiterPy Meetup
И я пока не видел тестов, которые бы как раз проверяли работу в режиме cross-device. 😏
источник