shad-go/fileleak
2021-03-20 17:15:53 +03:00
..
fileleak.go Add fileleak task 2021-03-12 19:47:54 +03:00
fileleak_test.go Add tests for file leak 2021-03-20 17:15:53 +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/