Skip to content

validate_sps_zip compara caminho completo do zip com nome de arquivo, gerando falso CRITICAL/ERROR de arquivo ausente #24

Description

@Rossi-Luciano

Descrição do problema

validate_sps_zip() (src/spsvalidator/domain/validation.py) reporta falsos CRITICAL e ERROR de "arquivo mencionado no XML mas não presente no pacote" para praticamente toda figura e todo PDF de rendition em pacotes SPS reais, mesmo quando o arquivo está de fato no zip.

Causa raiz: files_in_zip é montado a partir de xml_with_pre.files, que traz o caminho completo dentro do zip (incluindo a subpasta, presente em todo pacote SPS real: o zip contém uma pasta com o nome do pacote, e os arquivos ficam dentro dela). Já asset["name"] e rendition["name"] (de xml_with_pre.assets/xml_with_pre.renditions) trazem só o nome do arquivo, sem path. A checagem asset["name"] not in files_in_zip compara nome-base contra caminho completo, então nunca bate.

Passos para reproduzir o problema

  1. Validar qualquer pacote SPS real cujo zip tenha os arquivos dentro de uma subpasta (padrão comum, confirmado num lote de 30 pacotes reais de teste).
  2. Observar no relatório de validação linhas CRITICAL do tipo "<arquivo> file is mentioned in the XML but not present in the package" para figuras que estão de fato no zip, e ERROR "PDF file not present in the package" pra renditions também presentes.

Comportamento esperado

Só reportar CRITICAL/ERROR de arquivo ausente quando o arquivo realmente não está no zip.

Correção

Já corrigido, junto com o refactor da issue #16 / PR #23, no commit 08ff77f (branch feature/issue-16-preview-html-idiomas): files_in_zip passou a ser comparado por nome-base dos dois lados.

Validado no mesmo lote de 30 pacotes reais: antes da correção, praticamente toda figura e rendition de pacote real vinha marcada como ausente; depois, restaram só os casos onde o arquivo realmente não está no zip (confirmado manualmente comparando com o conteúdo do zip).

Abrindo esta issue para rastrear o bug separadamente da issue #16 (que tratava de outro assunto, a prévia HTML), já que esse problema afeta o relatório de validação em si, não só a prévia, e pode ter gerado falsos positivos em validações anteriores a este fix.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions