OSX文件系统事件 - 单元测试

时间:2015-03-24 19:54:25

标签: macos cocoa unit-testing fsevents

我正在处理代码处理文件系统事件API的单元测试。它在文件和子目录中创建一个包含随机数据的目录树,然后对这些文件执行一些更改并测试是否正确处理了更改。

但是,这仅适用于在某个用户空间目录中创建文件的情况,例如在我自己的桌面上。当我尝试将测试文件放在/tmpNSTemporaryDirectory()的位置时,侦听器不会收到任何事件。文件系统事件API中是否记录了/var/tmp等目录中的更改?或者这是对这些目录的权限问题?我没有在我的应用程序的这一部分使用Sandbox。

更新

问题出在我的代码的其他地方,文件系统事件确实适用于整个文件系统。请参阅以下答案,了解我的一些不相关的修复方法。

1 个答案:

答案 0 :(得分:0)

问题在于我的代码为我的文件系统监听器设置了目录。为了将来参考,对我有用的语法如下。目录变量可以从其他地方传入。

NSArray* directories = @[@"/Users/name/Documents", @"/tmp"];
CFArrayRef pathsToWatch = (__bridge CFArrayRef)(directories);

然后pathsToWatch变量会传递到FSEventStreamCreate来电。