shad-go/fileleak/README.md
2021-03-12 20:55:55 +03:00

1.9 KiB
Raw Blame History

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/