如何告知Gazelle将指定Go文件归为go_default_test而非go_default_library?
解决Gazelle识别测试文件的问题
方法一:直接标记为测试文件
在目标目录的BUILD.bazel文件顶部添加Gazelle指令,明确指定embed_testdata.go属于测试源码:
# gazelle:testfile embed_testdata.go
Gazelle后续更新BUILD文件时,会自动把该文件归类到go_default_test的srcs中,同时不会将其纳入go_default_library。
方法二:排除生产库+保护测试配置
如果需要更灵活的控制,可以分两步操作:
- 先添加排除指令,让Gazelle不把
embed_testdata.go加入生产代码库:# gazelle:exclude embed_testdata.go - 手动修改
go_default_test规则,将embed_testdata.go加入srcs,然后在该规则上方添加gazelle:keep指令,防止Gazelle覆盖这个手动配置:# gazelle:keep go_default_test( name = "go_default_test", srcs = [ # 原有测试文件... "embed_testdata.go", ], # 其他依赖、数据文件等配置... )
这两种方案都能稳定实现需求,避免Gazelle撤销你的手动修改。
内容的提问来源于stack exchange,提问作者Noel Yap
相关产品推荐
相关产品推荐

