shad-go/fileleak
Sergey Paramoshkin dc939b6ed1
update repo
2023-10-02 22:32:41 +03:00
..
fileleak.go go fix old build tags. 2022-03-15 23:49:56 +03:00
fileleak_test.go update repo 2023-10-02 22:32:41 +03:00
README.md [fileleak] Fix readme. 2021-03-12 22:41:11 +03:00

fileleak

Реализуйте библиотеку для поиска утечек файлов в тестах.

Библиотека содержит единственную функцию - VerifyNone. Пользователь должен вызвать эту функцию в начале своего теста.

Библиотека смотрит на все открытые файлы процесса в начале и в конце теста. Если в конце теста находятся открытые файлы, которые не были открыты на момент старта теста, то библиотека фейлит весь тест.

Эта задача будет корректно работать только на linux. Если вы пользуетесь другой операционной системой, вам придётся отлаживаться через CI.

Чтобы узнать открытые файлы процесса, нужно прочитать директорию /proc/self/fd. Эта директория содержит символические ссылки. Именем ссылки является номер файлового дескриптора, а значением ссылки является какое-то текстовое описание открытого файла. Значение ссылки можно прочитать, используя os.Readlink.

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/