登录
首页 >  Golang >  Go问答

如何在 bazel 中访问静态文件目标?

来源:stackoverflow

时间:2024-02-28 17:54:24 203浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何在 bazel 中访问静态文件目标?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我想使用 go_test 运行一个测试,但是它会读取一些文件以运行测试 - 在本例中为 Excel 文件。

当我尝试运行测试时,我尝试读取文件 "testdata/good_file.xlsx" 的相对路径,但出现文件未找到错误。如果我使用 go test 正常运行测试,它工作正常。我如何从 bazel 中的测试中读取此文件?


解决方案


请注意,这个答案适用于所有语言,而不仅仅是 go。它也适用于像 go_binarygo_image 这样的二进制文件,而不仅仅是测试。

bazel 尝试为您的二进制文件创建一个密封环境,这意味着 build.bazel 文件中未明确指定的任何内容都将被忽略,并且从正在运行的任何内容的角度来看,这些内容都不存在。

包含它相当简单。您首先创建一个包装数据的 filegroup 目标:

filegroup(
    name = "testdata",
    srcs = [
        "testdata/good_file.xlsx",
    ],
    # alternatively you can use a glob if you want to get all the excel files, which is usually
    # the case when working with tests:
    # srcs = glob(["testdata/*.xlsx"]),
)

然后在您的测试目标中,使用 data 属性包含数据:

go_test(
    name = "my_test",
    # ... some fields ...
    data = [
        ":testdata",
    ],
    # ... more fields ...
)

本篇关于《如何在 bazel 中访问静态文件目标?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>