我对哈德逊比较新,所以请原谅我,如果这是一个“杜”的问题。如何让我的哈德森项目构建在第二组鼻测验上失败?
我有一个用python编写的项目(使用pylons和nosetests),它包括一个服务器组件和一个客户端组件。我在服务器层次结构和客户端层次结构中设置了功能测试,以执行这两个组件。在我的构建脚本(从哈得逊项目配置页面发起一个shell脚本),我运行两个不同的nosetests,连续,像这样:
# Python tests for server
find $WORKSPACE/server/src/project/tests -iname "*test_*.py" | xargs $NOSETESTS --with-coverage --cover-package=project --cover-html --cover-erase --with-pylons="$PYLONS_INI"
echo "SERVER TEST EXIT STATUS: $?"
if [ $? -ne 0 ]; then
test_status=$test_status+$?
export TEST_STATUS=$test_status
exit $?
fi
(然后,启动服务器后)
# Python tests for client
find $WORKSPACE/server/src/project/tests -iname "*test_*.py" | xargs $NOSETESTS --with-coverage --cover-package=projectclient --cover-html --cover-erase --with-pylons="$PYLONS_INI"
echo "CLIENT TEST EXIT STATUS: $?"
if [ $? -ne 0 ]; then
test_status=$test_status+$?
export TEST_STATUS=$test_status
exit $?
fi
然后关闭服务器。
第一组测试(服务器测试)始终有效。如果测试失败,构建报告失败,球变成红色。然而,第二套(客户端测试)从来没有工作。如果测试失败,STDOUT报告失败,并且脚本显示退出状态123,但构建永远不会失败。
我试着在我的哈德森配置中添加
maven.test.failure.ignore=false,根据我在这里看到的一些其他问题在stackoverflow上,但它似乎没有任何区别。我尝试强制脚本以人工退出值终止,看看它是否注意退出值,而这并没有改变。我也尝试在服务器测试之上移动客户端测试,以查看哈德森为什么只允许进行一组鼻子测试,但是这似乎也没有改变任何事情。
如果有人有任何想法我可能会做错,我一定会感谢您的帮助。如果您需要更多信息,请告诉我。
谢谢!
============================
UPDATE:
我能得到的第二组测试的工作方式如下:
find $WORKSPACE/client/python/src/tests -iname "*test_*.py" | xargs $NOSETESTS --with-coverage --cover-package=projectclient --cover-html --cover-erase --with-pylons="$PYLONS_INI"
client_test_status=$?
if [ $client_test_status -ne 0 ]; then
echo "Client Test Status = $client_test_status"
exit $client_test_status
fi
但是,我不必对SERVER测试进行此更改。只有客户。服务器测试仍然可以工作,仍然是这样的:
find $WORKSPACE/server/src/project/tests -iname "*test_*.py" | xargs $NOSETESTS --with-coverage --cover-package=project --cover-html --cover-erase --with-pylons="$PYLONS_INI"
if [ $? -ne 0 ]; then
exit $?
fi
一个假设浮在这里,是有可能与管道吞咽$问题?但这并不能解释为什么服务器测试成功(失败时),但客户端测试不会(除非$被捕获)。
这是一个伟大的观点。我会给你一个机会,回到你身边。 – 2011-01-06 22:30:28