代码之家  ›  专栏  ›  技术社区  ›  DevSolar

汽车制造商:如何有效地处理全球和本地的“检查”?

  •  2
  • DevSolar  · 技术社区  · 16 年前

    ./tests/Makefile.am 当我调用 make check . 档案 global_wrapper.c 包含设置/分解代码,并调用在多个子目录中实现的测试函数。

    TESTS = global_test
    
    check_PROGRAMS = global_test
    
    global_test_SOURCES = global_wrapper.c foo/foo_test.c bar/bar_test.c
    

    效果很好。但是测试需要很长时间,所以我希望能够选择只从单个子目录执行测试。我一开始就是这样做的。

    SUBDIRS = foo bar
    

    在子目录中,我添加了本地包装器和 Makefile.am s:

    TESTS = foo_test
    
    check_PROGRAMS = foo_test
    
    # the foo_test.c here is of course the same as in the global Makefile.am
    foo_test_SOURCES = foo_wrapper.c foo_test.c
    

    核对 在子目录中 foo ,只执行foo测试。

    ,当我现在打电话的时候 核对 在里面 ./tests 所有测试执行两次 global_test ,并一次性通过本地测试程序。

    如果我省略了 SUBDIRS Makefile.am ,子目录makefiles未获得生成。如果我遗漏了 TESTS Makefile.am 是的, 核对 不会对本地目录执行任何操作。

    3 回复  |  直到 16 年前
        1
  •  4
  •   William Pursell    16 年前

    TESTS = foo_test bar_test
    

    并使用以下内容适当地构建foo_测试条

    foo_test_SOURCES = foo/foo_wrapper.c foo/foo_test.c
    bar_test_SOURCES = bar/bar_wrapper.c bar/bar_test.c
    

    现在,如果您执行原始的“检查”,两个测试都将运行。如果您只想运行一个测试,可以使用“make check TESTS=foo\u test”或“make check TESTS=bar\u test”来执行,并且只有适当的测试才会运行。通常,Makefile.am会列出默认情况下将在测试中运行的所有测试,并且用户会在生成时选择备用测试。当然,如果您经常运行测试,您可以在shell会话中“export tests=foo_test”,然后只键入“make check”。

        2
  •  1
  •   adl    16 年前

    您不能从“全局_测试”中删除已经在子目录中执行的任何测试吗(这样他们就不会被处决两次。)

        3
  •  1
  •   adl    16 年前

    我想你可能会改写 check 定义环境变量的顶级规则:

    check:
            DISABLE_SUBTESTS=1 make check-recursive
    

    然后测试 DISABLE_SUBTESTS 在您的子目录中,以决定是否实际运行测试。

    (就我个人而言,我宁愿安排在现有的公司工作 make check 通过隐藏我的测试的输出,而不是像这样覆盖生成的规则来构建框架。)