有选择地启用测试程序(如果Python可用autom)

2024-10-05 13:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用C编写的程序,使用automake/autoconf构建,有两个测试套件。一个是单元测试套件,也是用C编写的;另一个是端到端的,并且(目前)是用Python编写的。我希望“makecheck”总是运行单元测试,并且只有在安装了Python时才运行端到端测试。这就是我现在所拥有的:

TESTS = unittests
if HAVE_PYTHON
TESTS += tester.py
tester_py_SOURCES = src/test/tester.py.in

tester.py: src/test/tester.py.in Makefile
        $(SED) -e 's,[@]PYTHON[@],$(PYTHON),' < $< > $@
        chmod +x $@
endif

HAVE_PYTHON由配置脚本使用

^{pr2}$

这在Unix上可以正常工作,但是会出现“没有规则可制定”的错误测试仪.py.exe“在窗户上。另外,复制和替换技术可以正确地获得#!行,这意味着我不能将测试套件分解成多个模块。在

有更好的方法吗?在


Tags: inpytest程序srcif套件have
1条回答
网友
1楼 · 发布于 2024-10-05 13:19:40

您必须将_SOURCES仅用于编译的内容,因此它是一个添加$(EXEEXT)的原因。试试这个:

TESTS = unittests
if HAVE_PYTHON
TESTS += tester.py
# Possibly use += here depending on the rest of your Makefile.am
check_SCRIPTS = tester.py
# I added $(srcdir) here so VPATH builds still work.
tester.py: $(srcdir)/src/test/tester.py.in Makefile
        $(SED) -e 's,[@]PYTHON[@],$(PYTHON),' < $< > $@
        chmod +x $@
endif

你有什么理由不直接通过configure.ac进行替换?在

^{pr2}$

这将使用config.status和自动生成重建规则重新生成脚本。在

编辑1:

如果您真正想做的是作为make check的一部分运行python tester脚本,我会这样做:

check-local:
if HAVE_PYTHON
        $(PYTHON) $(srcdir)/src/test/tester.py
endif

{{{{cd6}的另一部分可以定义为的外部

相反,您可能更喜欢这样写:

check-local:
        test "$(PYTHON)" != ":" && $(PYTHON) $(srcdir)/src/test/tester.py

参见汽车制造手册中的extending。在

相关问题 更多 >

    热门问题