Ich arbeite an einer Software, die Pacman-Pakete erstellt (im Grunde sind es Tarballs mit einigen speziellen Metadatendateien). Die Testsuite erstellt einige Pakete und vergleicht das resultierende Paket mit einem aufgezeichneten erwarteten Ergebnis.
Eines der Felder in den im Paket aufgezeichneten Metadaten ist die installierte Größe des Pakets, die durch Ausführen du -s --apparent-size
im Stammverzeichnis vor dem Tarieren bestimmt wird.
All dies funktioniert einwandfrei auf meinen lokalen Arch Linux-Boxen, auf denen ich entwickle. Die Pakete, einschließlich ihrer installierten Größe in Bytes (nicht einmal Kilobytes, Bytes!), Werden bei jedem Test genau reproduziert.
Jetzt habe ich diesen Test auch für Travis aktiviert, wo er (soweit ich aus den Travis-Dokumenten weiß) auf einem Ubuntu-12.04-basierten Container ausgeführt wird. Dort besteht der Test meistens. Meistens . Manchmal werden installierte Größen berechnet, die um 80-99% abweichen.
Hier ist ein Beispiel für einen fehlgeschlagenen Test: https://travis-ci.org/holocm/holo/builds/89326780 (Der Test kurz zuvor war erfolgreich.) Einer der relevanten Unterschiede ist
@@ -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
Das Rätselhafte daran ist, dass es nur manchmal ohne erkennbares Muster passiert. Der Test ordnet dieselben Dateien wie immer an, läuft du -s --apparent-size
auf dem resultierenden Baum und kommt zu einem völlig falschen Ergebnis. Ich habe versucht, dies auf einer Ubuntu 12.04-VM zu reproduzieren, und obwohl ich es dort ein- oder zweimal gesehen habe, konnte ich dort auch keine Muster erkennen, die mir helfen würden, das Problem zu reproduzieren.
Vielleicht hat hier jemand eine Idee, was dieses Problem verursachen könnte?
EDIT: Oh, es gibt tatsächlich ein Muster, das ich beobachtet habe. du
wird einmal für jeden Testfall ausgeführt. Wenn es für den ersten Testfall fehlschlägt, schlägt es für alle Testfälle in diesem Lauf fehl.