Tôi đang làm việc trên một phần mềm xây dựng các gói Pacman (về cơ bản là tarball với một số tệp siêu dữ liệu đặc biệt). Bộ kiểm thử xây dựng một số gói, sau đó so sánh gói kết quả với kết quả mong đợi được ghi lại.
Một trong các trường trong siêu dữ liệu được ghi trong gói là kích thước đã cài đặt của gói, được xác định bằng cách chạy du -s --apparent-size
trên thư mục gốc trước khi thực hiện.
Tất cả điều này hoạt động hoàn toàn tốt trên các hộp Arch Linux địa phương nơi tôi phát triển. Các gói, bao gồm kích thước được cài đặt của chúng tính bằng byte (thậm chí không phải kilobyte, byte!) Được sao chép chính xác mỗi khi tôi chạy thử nghiệm.
Bây giờ tôi cũng đã kích hoạt thử nghiệm này trên Travis, nơi nó chạy (theo như tôi hiểu từ các tài liệu của Travis) trên một thùng chứa dựa trên Ubuntu-12.04. Ở đó, bài kiểm tra vượt qua hầu hết thời gian. Hầu hết thời gian. Đôi khi, nó tính toán kích thước đã cài đặt giảm 80-99%.
Dưới đây là một ví dụ về một bài kiểm tra thất bại: https://travis-ci.org/holocm/holo/builds/89326780 (Bài kiểm tra ngay trước khi thành công.) Một trong những khác biệt có liên quan là
@@ -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
Điều khó hiểu về điều này là nó chỉ xảy ra một số thời gian, không có mô hình rõ ràng. Thử nghiệm sắp xếp các tệp giống như mọi khi, chạy du -s --apparent-size
trên cây kết quả và đi đến một kết quả hoàn toàn sai. Tôi đã cố gắng tái tạo điều này trên máy ảo Ubuntu 12.04 và trong khi tôi thấy nó xuất hiện ở đó một hoặc hai lần, tôi không thể thấy bất kỳ mẫu nào xuất hiện ở đó, điều đó sẽ giúp tôi tái tạo vấn đề.
Có lẽ ai đó ở đây có một ý tưởng những gì có thể gây ra vấn đề này?
EDIT: Ồ, thực sự có một mẫu mà tôi đã quan sát. du
chạy một lần cho mỗi testcase. Khi thất bại cho testcase đầu tiên, nó sẽ thất bại cho tất cả các testcase trong lần chạy này.