Saya sedang mengerjakan perangkat lunak yang membangun paket Pacman (yang pada dasarnya adalah tarball dengan beberapa file metadata khusus). Test suite membangun beberapa paket, lalu membandingkan paket yang dihasilkan dengan hasil yang diharapkan.
Salah satu bidang dalam metadata yang dicatat dalam paket adalah ukuran paket yang diinstal, ditentukan dengan menjalankan du -s --apparent-size
pada direktori root sebelum tar'ing itu.
Semua ini berfungsi dengan baik pada kotak Arch Linux lokal tempat saya mengembangkan. Paket-paket, termasuk ukurannya yang terinstal dalam byte (bahkan tidak kilobyte, byte!) Direproduksi tepat setiap kali saya menjalankan tes.
Sekarang saya juga mengaktifkan tes ini pada Travis, di mana ia berjalan (sejauh yang saya mengerti dari dokumen Travis) pada wadah berbasis Ubuntu-12,04. Di sana, tes melewati sebagian besar waktu. Sebagian besar waktu. Terkadang, ia menghitung ukuran yang dipasang yang tidak aktif sebesar 80-99%.
Berikut ini adalah contoh tes yang gagal: https://travis-ci.org/holocm/holo/builds/89326780 (Tes sebelum itu berhasil.) Salah satu perbedaan yang relevan adalah
@@ -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
Hal yang membingungkan tentang ini adalah bahwa hal itu hanya terjadi pada suatu waktu, tanpa pola yang jelas. Tes mengatur file yang sama seperti biasanya, berjalan du -s --apparent-size
di pohon yang dihasilkan, dan tiba di hasil yang sepenuhnya salah. Saya telah mencoba mereproduksi ini di Ubuntu 12,04 VM, dan sementara saya telah melihatnya muncul di sana sekali atau dua kali, saya tidak bisa melihat ada pola yang muncul di sana yang akan membantu saya mereproduksi masalah.
Mungkin seseorang di sini punya ide apa yang bisa menyebabkan masalah ini?
EDIT: Oh, sebenarnya ada satu pola yang saya amati. du
berjalan satu kali untuk setiap testcase. Ketika gagal untuk testcase pertama, itu akan gagal untuk semua testcases dalam menjalankan ini.