Estou trabalhando em um software que cria pacotes Pacman (que basicamente são pacotes com alguns arquivos de metadados especiais). O conjunto de testes constrói alguns pacotes e compara o pacote resultante com um resultado esperado registrado.
Um dos campos nos metadados registrados no pacote é o tamanho instalado do pacote, determinado pela execução de du -s --apparent-size
no diretório raiz antes de tará-lo.
Tudo isso funciona perfeitamente nas minhas caixas locais do Arch Linux onde desenvolvo. Os pacotes, incluindo seu tamanho instalado em bytes (nem mesmo kilobytes, bytes!), São reproduzidos exatamente toda vez que eu executo o teste.
Agora eu também habilitei este teste no Travis, onde ele roda (até onde eu entendo dos documentos do Travis) em um container baseado no Ubuntu-12.04. Lá, o teste passa na maioria das vezes. Mais das vezes. Às vezes, calcula os tamanhos instalados que estão desativados em 80 a 99%.
Aqui está um exemplo de um teste que falha: link (O teste just before that teve sucesso.) Um dos diffs relevantes é
@@ -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
A coisa intrigante sobre isso é que isso acontece apenas algumas vezes, sem nenhum padrão aparente. O teste organiza os mesmos arquivos como sempre, executa
du -s --apparent-size
na árvore resultante e chega a um resultado completamente errado. Eu tentei reproduzir isso em uma VM Ubuntu 12.04 e, embora eu tenha visto aparecer lá uma ou duas vezes, não pude ver nenhum padrão que pudesse me ajudar a reproduzir o problema.
Talvez alguém tenha uma ideia do que poderia causar esse problema?
EDIT: Oh, há um padrão que eu observei, na verdade. du
é executado uma vez para cada testcase. Quando falhar para o primeiro testcase, falhará para todos os testcassos nesta execução.