当前位置: 首页 > 知识库问答 >
问题:

Bazel:如何访问文件组的SRC?

许明朗
2023-03-14

我在“root/html_files/*.html”目录中有一些html文件。我想迭代这些html文件,并在“root/tests/”目录下对它们运行一些bazel规则。所以,我创建了一个包含这些html文件的文件组,并试图在“root/tests/”目录中访问它们,但这不起作用。我想知道这是否可能?

我在“root/”目录中的生成文件:

    HTMLS_LIST = glob(["html_files/*.html",])
    filegroup(
        name = "html_files",
        srcs = HTMLS_LIST,
        visibility = [ "//visibility:public" ],)

我在“root/tests/”目录下的构建文件:

    load("//tests:automation_test.bzl", "make_and_run_html_tests")
    make_and_run_html_tests(
        name = 'test_all_htmls',
        srcs = ['test/automation_test.py'],
        html_files = '//:html_files')

我的bzl文件在"root/test/"目录下:


def make_and_run_html_tests(name, html_files, srcs):
    tests = []
    for html_file in html_files: # I want to iterate on sources of html filegroup here
        folders = html_file.split("/")
        filename = folders[-1].split(".")[0]
        test_rule_name = 'test_' + filename + '_file'
        native.py_test(
            name = test_rule_name,
            srcs = srcs,
            main = srcs[0],
            data = [
                html_file,
                ],
            args = [html_file],
        )
        testname = ":" + test_rule_name
        tests.append(testname)

    native.test_suite(
        name = name,
        tests = tests,
    )

以及“root/tests/”目录中的python unittest文件:

import sys
import codecs
import unittest


class TestHtmlDocumetns(unittest.TestCase):

    def setUp(self):
        self.html_file_path = sys.argv[1]

    def test_html_file(self):
        fid = codecs.open(self.html_file_path, 'r')
        print(fid.read())
        self.assertTrue(fid)


if __name__ == '__main__':

    unittest.main(argv=[sys.argv[1]])

共有1个答案

西门骁
2023-03-14

不能从这样的宏中访问对另一个文件组/规则中的文件的引用。您需要创建一个规则,并通过ctx访问它们。文件attr

但是,如果要删除文件组,并将glb直接传递给宏,则可以遍历它们:

HTMLS_LIST = glob(["html_files/*.html"])

make_and_run_html_tests(
  name = 'test_all_htmls',
  srcs = ['test/automation_test.py'],
  html_files = HTMLS_LIST
)

在展开宏之前,将glb解析为数组

 类似资料:
  • 我需要改变php.ini文件中的一些变量,以便能够上传文件。我买了一个域名 配置文件(php.ini)路径是/usr/local/php/p56 加载的配置文件是/usr/local/directadmin/data/users/kristak/php/funwithhakase。pl/php56。伊尼 我不知道应该访问这些文件中的哪些,以及如何更改所需的变量。我试着把地址输入到FileZilla

  • 问题内容: 如果我有类似的东西 我想从我拥有的地方访问,该怎么办? 问题答案: 推荐用于16.3之前的React版本 如果无法避免,那么从React文档中提取的建议模式将是: 该 家长 转发绑定到一个功能道具 家长 。当呼叫作出反应的 儿童的 道具也将分配 孩子的 给 父母的 财产。 建议用于React> = 16.3 引用转发是一种选择加入功能,它使某些组件可以接收它们收到的引用,并将其进一步向

  • 我有一个zip文件“items.zip”。 在这个zip-File中有不同的类,其中一些对我有用,而另一些则不是。 圆圈类有一个construcor和一个paint方法。 圆圈ButYoucantDrawit。类具有损坏的构造函数。 在启动主程序之前,我想访问项目。zip,检查它们是否可用,然后尽可能地使用有用的。最好的方法是什么? 到目前为止,我已经尝试了9次,但没有一次有意义。我如何才能做到最

  • 本文向大家介绍如何在子组件中访问父组件的实例?相关面试题,主要包含被问及如何在子组件中访问父组件的实例?时的应答技巧和注意事项,需要的朋友参考一下 vue中如果父组件想调用子组件的方法,可以在子组件中加上ref,然后通过this.$refs.ref.method调用(https://www.cnblogs.com/jin-zhe/p/9523029.html) Vue中子组件调用父组件的方法,这里

  • 我正在构建一个应用程序,它需要使用Microsoft Graph API来访问特定文件,该文件存在于我的组织中的特定组的文档中。 我已经确定了文档所在组的组ID,但是我无法确定如何访问这个特定组的驱动器。 如果对“/groups/{ID}/drive”或“/groups/{ID}/drive/root/children/”执行GET请求,将得到以下响应: 我以前曾设法使用Microsoft Gra

  • 问题内容: 在ubuntu服务器上使用ruby进行Redis设置,但是无法弄清楚如何访问其日志文件。教程说应该在这里: 但甚至找不到/ var /文件夹 问题答案: 通过以下方式发现它: 因此,如果设置是更标准的,则应为: 这将输出文件的最后100行。 日志文件所在的位置是您可以通过以下方式访问的配置: 使用上述内容可能并不总是显示日志文件。在那种情况下使用