我继承了一些 python 代码,它编写了一个新的 '/etc/udev/rules.d' 映射文件,然后对 udev 进行子进程调用以使其刷新其设备列表:
call(['/sbin/udevadm', 'trigger', '--action=change'])
触发调用是必要的,因为我们需要更新映射而不想拔下并重新插入正在映射的设备。我的问题是“调用”行在某一点被删除,导致程序其他部分的副作用不明显,因此没有被捕获。
我通常的解决此类问题的方法是对该方法(写入映射文件并调用触发器)进行单元测试以强制执行预期的行为,但这种行为似乎超出了单元测试的范围。这是一个系统调用,更不用说 udevadm 触发器需要 sudo 访问权限。我不知道在这种情况下如何/模拟什么。
我考虑使用 pyudev 库,因为我看到它可以模拟 udev 的某些行为,但看起来它不能模拟触发行为(或者甚至访问它)。
没有抛出一个大的“#永远不要删除这条线!” 在“呼叫”行上方,我可以在这里做些什么来防止将来将其删除吗?“不要删除”行很容易被忽略,比如一年后没有人知道它为什么在那里。