【问题标题】:How can I read static files from a bazel target?如何从 bazel 目标读取静态文件?
【发布时间】:2021-02-17 22:34:22
【问题描述】:

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

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

【问题讨论】:

    标签: go bazel


    【解决方案1】:

    请注意,此答案适用于所有语言,而不仅仅是 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 ...
    )
    

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多