Я работаю над программным обеспечением, которое создает пакеты Pacman (которые в основном являются tar-архивами с некоторыми специальными файлами метаданных). Набор тестов создает несколько пакетов, а затем сравнивает полученный пакет с записанным ожидаемым результатом.
Одним из полей в метаданных, записанных в пакете, является установленный размер пакета, определяемый путем запуска du -s --apparent-size
в корневом каталоге перед его сборкой.
Все это прекрасно работает на моих локальных компьютерах Arch Linux, где я разрабатываю. Пакеты, включая их установленный размер в байтах (даже не килобайтах, байтах!), Воспроизводятся ровно при каждом запуске теста.
Теперь я также включил этот тест на Travis, где он запускается (насколько я понимаю из документов Travis) в контейнере на основе Ubuntu-12.04. Там тест проходит большую часть времени. В большинстве случаев. Иногда он рассчитывает установленные размеры, которые отключены на 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, и хотя я видел, что это появляется там один или два раза, я не мог видеть там никаких шаблонов, которые помогли бы мне воспроизвести проблему.
Может быть, у кого-то здесь есть идея, что может вызвать эту проблему?
РЕДАКТИРОВАТЬ: О, есть один шаблон, который я наблюдал, на самом деле. du
запускается один раз для каждого теста. Когда это терпит неудачу для первого тестового случая, это терпит неудачу для всех тестовых случаев в этом запуске.