使用gotestsum --watch flag时出现文件stat警告的问题
gotestsum --watch 模式下stat缺失文件警告的解决办法
使用gotestsum的--watch参数时,每次保存测试文件后都会出现如下警告:
WARN failed to stat path/to/pkg/Somefile_test.go~: stat path/to/pkg/Somefile_test.go~: no such file or directory
测试本身可正常执行(无论通过或失败),警告固定在Done [n] tests ...之后打印,且仅出现一条针对单个缺失文件的提示。手动在终端按r或a重新运行测试时不会触发该警告,尝试过相对路径、包名、-- ./...等参数组合,问题依旧。
问题根源
这个警告来自文本编辑器的临时备份机制——像Vim、Emacs这类编辑器在保存文件时,会先生成带~后缀的临时备份文件,保存完成后立刻删除。gotestsum的watch功能会监控文件系统的所有变动,当编辑器创建这个临时文件时,gotestsum会记录下路径,但等它去检查文件状态时,备份文件已经被编辑器删掉,因此抛出stat失败的警告。
解决方法
关闭编辑器的备份文件生成
以Vim为例,在~/.vimrc中添加以下配置:set nobackup set nowritebackup其他编辑器可查找对应关闭备份文件的设置,从根源避免临时文件触发警告。
让gotestsum忽略备份文件
使用--exclude参数过滤带~后缀的文件:gotestsum --watch --exclude '*~' -- ./...这样watch机制会自动跳过所有备份文件,不会执行无效的stat检查。
内容的提问来源于stack exchange,提问作者BPearce
相关产品推荐
相关产品推荐

