如果Python可用,则有选择地启用测试程序-automake
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如果Python可用,则有选择地启用测试程序-automake,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1659字,纯文字阅读大概需要3分钟。
内容图文
![如果Python可用,则有选择地启用测试程序-automake](/upload/InfoBanner/zyjiaocheng/673/9b7ccd70a00d4d0baebdae02b46e65ce.jpg)
我有一个用C编写的程序,使用automake / autoconf构建,并且具有两个测试套件.一个是也用C编写的单元测试套件.另一个是端到端的(当前)是用Python编写的.我希望“ make check”始终运行单元测试,并且仅当安装了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由配置脚本使用
AM_PATH_PYTHON([2.6],, [:])
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"])
这在Unix上可以正常工作,但在Windows上会出现“没有规则可以生成tester.py.exe”的问题.同样,获得#!的复制和替换技术.右行表示我无法将测试套件分解为多个模块.
有一个更好的方法吗?
解决方法:
您必须仅将_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进行替换吗?
AS_IF([test "$PYTHON" != ":"], [AC_CONFIG_FILES([src/test/tester.py])])
这将使用config.status重新制作脚本并自动生成重建规则.
编辑1:
如果您真正想做的是在make check中运行python tester脚本,则可以这样做:
check-local:
if HAVE_PYTHON
$(PYTHON) $(srcdir)/src/test/tester.py
endif
(我将check-local放在if HAVE_PYTHON之外,以便在需要时可以定义其他命令作为check-local的一部分运行.)
您可能更喜欢编写以下代码:
check-local:
test "$(PYTHON)" != ":" && $(PYTHON) $(srcdir)/src/test/tester.py
请参见自动制作手册中的extending.
内容总结
以上是互联网集市为您收集整理的如果Python可用,则有选择地启用测试程序-automake全部内容,希望文章能够帮你解决如果Python可用,则有选择地启用测试程序-automake所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。