shad-go/fileleak/README.md
2021-03-12 22:41:11 +03:00

26 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# fileleak
Реализуйте библиотеку для поиска утечек файлов в тестах.
Библиотека содержит единственную функцию - `VerifyNone`. Пользователь должен вызвать эту функцию в начале своего теста.
Библиотека смотрит на все открытые файлы процесса в начале и в конце теста. Если в конце теста находятся открытые файлы,
которые не были открыты на момент старта теста, то библиотека фейлит весь тест.
Эта задача будет корректно работать только на `linux`. Если вы пользуетесь другой операционной системой,
вам придётся отлаживаться через CI.
Чтобы узнать открытые файлы процесса, нужно прочитать директорию `/proc/self/fd`.
Эта директория содержит символические ссылки. Именем ссылки является номер файлового дескриптора, а значением
ссылки является какое-то текстовое описание открытого файла. Значение ссылки можно прочитать, используя `os.Readlink`.
```bash
prime@bee ~/C/shad-go> ls -lah /proc/self/fd
total 0
dr-x------ 2 prime prime 0 мар 12 19:44 ./
dr-xr-xr-x 9 prime prime 0 мар 12 19:44 ../
lrwx------ 1 prime prime 64 мар 12 19:44 0 -> /dev/pts/7
lrwx------ 1 prime prime 64 мар 12 19:44 1 -> /dev/pts/7
lrwx------ 1 prime prime 64 мар 12 19:44 2 -> /dev/pts/7
lr-x------ 1 prime prime 64 мар 12 19:44 3 -> /proc/871308/fd/
```