我正在开发一个构建Pacman软件包的软件(基本上是带有一些特殊元数据文件的tarball)。测试套件将生成一些程序包,然后将结果程序包与记录的预期结果进行比较。
程序包中记录的元数据中的字段之一是程序包的安装大小,该大小由du -s --apparent-size
在将其压缩之前在根目录上运行确定。
所有这些在我开发的本地Arch Linux机器上都可以正常工作。每次运行测试时,都会精确复制这些软件包,包括以字节为单位的安装大小(甚至不是千字节,字节!)。
现在,我还在Travis上启用了此测试,据我所知,它在基于Ubuntu-12.04的容器上运行(据我对Travis文档的了解)。在那里,测试大部分时间都通过了。大多数时候。有时,它计算出的安装大小减少了80-99%。
这是一个测试失败的示例:https : //travis-ci.org/holocm/holo/builds/89326780(该测试成功之前。)相关的区别之一是
@@ -37,7 +37,7 @@
pkgdesc = my foo bar package
url =
packager = Unknown Packager
- size = 37728
+ size = 1464
arch = any
license = custom:none
replaces = foo-bar<2.1
令人费解的是,它仅在某些时间发生,没有明显的模式。测试会像往常一样排列相同的文件,du -s --apparent-size
在结果树上运行,并得出完全错误的结果。我尝试在Ubuntu 12.04 VM上重现此错误,虽然我看到它出现一次或两次,但我看不到那里出现任何可以帮助我重现此问题的模式。
也许有人在想什么可能导致此问题?
编辑:哦,实际上我观察到一种模式。du
每个测试用例运行一次。如果第一个测试用例失败,则此运行中的所有测试用例都将失败。