Я работаю над модульными тестами для кода, который имеет дело с API-интерфейсом файловой системы. Он создает дерево каталогов со случайными данными в файлах и подкаталогах, а затем выполняет несколько изменений в этих файлах и проверяет правильность обработки изменений.OSX File System Events - модульное тестирование
Однако это работает только тогда, когда файлы создаются в некотором каталоге пользовательского пространства, например на моем рабочем столе. Когда я пытаюсь помещать тестовые файлы где-то вроде /tmp
или в местоположение NSTemporaryDirectory()
, слушатель не получает никаких событий. Являются ли изменения в каталогах, таких как /var
и /tmp
, которые вообще не записываются API-интерфейсом файловой системы? Или это проблема с разрешениями в этих каталогах? Я не использую Sandbox для этой части моего приложения.
Update
Вопрос был в другом месте в моем коде, File System Events действительно применяются ко всей файловой системе. См. Ниже ответ на мое несколько несвязанное исправление.
Из моих коротких тестов происходят события, когда я касаюсь вещей в/tmp и в/var/tmp. Как вы создаете файлы в модульном тесте? Как настроить FSEventStream? –
Вы правы, что события правильно запускаются для каталога '/ tmp'. На самом деле проблема заключалась в том, что мой код конвертировал 'NSArray'' NSString'' в 'CFArrayRef' из' CFStringRef' для отслеживания путей. Я могу поместить код для этого в ответ, хотя он несколько не связан с исходным вопросом. – Aaron