Corrige a baseline da suíte de validação SPS#1259
Open
pitangainnovare wants to merge 16 commits into
Open
Conversation
Adiciona aiohttp, langdetect, requests e tenacity a INSTALL_REQUIRES, pois esses pacotes são importados diretamente por módulos do packtools. Remove aiohttp, requests e tenacity de TESTS_REQUIRE, evitando que dependências de execução sejam instaladas somente no ambiente de testes. Corrige erros ModuleNotFoundError que impediam a execução de: - tests.sps.validation.test_history_integration - tests.sps.validation.test_list - tests.sps.validation.test_sec - tests.sps.validation.test_supplementary_material
Atualiza TestSupplementaryMaterialValidation.test_validate_full_workflow para refletir a separação das validações de acessibilidade realizada no fluxo de validação. As validações de alt-text, long-desc, transcript, speaker/speech e structure são executadas separadamente por XMLAccessibilityDataValidation e não fazem mais parte dos resultados de XmlSupplementaryMaterialValidation. Ajusta o total esperado de resultados de 20 para 10 e substitui as asserções duplicadas de @id e @xLink:href por verificações explícitas de suas duas ocorrências. Teste executado: python -m unittest -v tests.sps.validation.test_supplementary_material
Adiciona o import de format_response em journal_meta.py, corrigindo o NameError nas validações de presença, unicidade, formato de ISSN e atributos de journal-meta. A correção elimina os 22 erros que impediam a execução das classes: - JournalMetaPresenceTest - ISSNFormatTest - JournalMetaAttributeTest Testes executados: python -m unittest -v \ tests.sps.validation.test_journal_meta.JournalMetaPresenceTest \ tests.sps.validation.test_journal_meta.ISSNFormatTest \ tests.sps.validation.test_journal_meta.JournalMetaAttributeTest
Evita o acesso aos campos de uma licença esperada inexistente quando o XML contém um idioma não configurado pelo periódico. Nessa situação, produz uma orientação para cadastrar dados de licença compatíveis com o idioma encontrado, preservando o texto renderizado e os campos internacionalizáveis advice_text e advice_params. Corrige o TypeError nos cenários exercitados por: - test_validate_license_3_expected_1_obtained_not_ok - test_validate_license_3_expected_3_obtained_not_ok
Atualiza os resultados esperados dos cenários de validação de licença para incluir os campos internacionalizáveis produzidos por build_response: msg_text, msg_params, adv_text e adv_params. Contempla a resposta inválida para uma licença em idioma não configurado e as respostas válidas em português e espanhol. Atualiza os testes: - test_validate_license_3_expected_1_obtained_not_ok - test_validate_license_3_expected_3_obtained_not_ok
Remove test_footnotes.py, que ainda importava o módulo inexistente packtools.sps.validation.footnotes e interrompia a descoberta da suíte com ModuleNotFoundError. O módulo footnotes.py foi removido como obsoleto no commit 4a42032, por meio do PR scieloorg#845. Sua implementação havia sido substituída por packtools.sps.validation.fn no commit b9134dc, por meio do PR scieloorg#844. A cobertura atual está em test_fn.py, utilizando FnValidation e XMLFnGroupValidation. A suíte substituta executa 7 testes com sucesso.
Atualiza os testes de idioma e tipo de artigo para refletir o contrato atual de build_response, no qual expected_value preserva a lista de valores permitidos mesmo quando a validação é bem-sucedida. As expectativas passam a ser construídas a partir dos parâmetros do validador, cobrindo configurações padrão e listas customizadas sem duplicar seus valores nos testes. A mudança de contrato ocorreu na migração de format_response para build_response realizada no commit a055d3f, por meio do PR scieloorg#1080. Atualiza os testes: - test_validate_language_with_valid_language - test_validate_language_with_custom_language_codes - test_validate_article_type_with_valid_type - test_validate_article_type_with_custom_list
Atualiza os testes de modo de disponibilidade de dados para refletir o contrato de build_response nas validações do tipo value in list. As expectativas passam a usar a lista configurada em specific_use_list com o prefixo "one of", tanto nos cenários válidos quanto no cenário inválido. Atualiza os testes: - test_validate_data_availability_fn_ok - test_validate_data_availability_sec_ok - test_validate_data_availability_fn_not_ok Os 9 testes de test_article_data_availability passam após o ajuste.
Atualiza os resultados esperados das validações de licença bem-sucedidas para incluir os campos msg_text, msg_params, adv_text e adv_params produzidos por build_response. Contempla licenças em inglês, português e espanhol nos cenários com uma ou três licenças obtidas. Atualiza os testes: - test_validate_license_3_expected_1_obtained_ok - test_validate_license_3_expected_3_obtained_ok Os dois testes passam após o ajuste, cobrindo quatro resultados de validação.
Atualiza os seis resultados esperados de validate_license_code para refletir o contrato atual do modelo e de build_response. Inclui type, code e original_article_type nos dados da licença, além dos campos msg_text, msg_params, adv_text e adv_params nas respostas de validação. Nos cenários inválidos, atualiza também a orientação para indicar como corrigir o código presente no endereço da licença Creative Commons. Os dados adicionais do modelo foram introduzidos no commit 9ca9c35, por meio do PR scieloorg#861. Os campos internacionalizáveis da resposta foram adicionados no commit a055d3f, por meio do PR scieloorg#1080. Atualiza os testes: - test_validate_license_code_ok - test_validate_license_code_not_ok Os 6 testes de test_article_license passam após os ajustes.
Atualiza os resultados esperados das validações de journal-meta para refletir os templates e parâmetros produzidos por build_response. Separa os textos renderizados em advice dos templates presentes em adv_text e registra seus valores dinâmicos em adv_params para acrônimo, ISSN, identificador NLM e nomes de editoras. Atualiza também msg_params para representar listas como strings, conforme o contrato atual das respostas. A estrutura internacionalizável foi introduzida no commit a055d3f, por meio do PR scieloorg#1080. Atualiza os testes: - test_acronym_validation_fail - test_validate_issn_not_ok - test_nlm_ta_id_validation_fail - test_validate_publisher_names_one_fail - test_validate_publisher_names_more_than_one_fail - test_validate_publisher_names_XML_has_not_expected_items - test_validate_publisher_names_function_has_not_expected_items Os 39 testes de test_journal_meta passam após os ajustes.
Atualiza os resultados esperados das validações de consistência entre os idiomas de título, resumo e palavras-chave do artigo e de subartigos. Adota "article title" como nome do elemento de título e atualiza os conselhos para o formato "Mark ... for ... language", conforme a implementação atual. Inclui também msg_text, msg_params, adv_text e adv_params nas respostas esperadas. A nomenclatura e os conselhos foram atualizados no commit e6224c7, por meio do PR scieloorg#933. Os campos internacionalizáveis foram adicionados no commit a055d3f, por meio do PR scieloorg#1080. Atualiza os testes: - test_validate_without_title - test_validate_sub_article_lang_without_title - test_validate_sub_article_lang_with_title_only - test_validate_without_abstract - test_validate_sub_article_lang_without_abstract - test_validate_without_kwd_group - test_validate_sub_article_lang_without_kwd_group Os 9 testes de test_metadata_langs passam após os ajustes.
Considera somente respostas CRITICAL nos testes test_valid_article_type, test_valid_contributor, test_valid_history_dates, test_valid_custom_meta, test_invalid_contributor_type e test_valid_sub_article, pois os validadores também retornam resultados OK. Adiciona o atributo id aos related-article válidos e atualiza test_valid_related_article e test_invalid_related_article_type para as regras introduzidas no PR scieloorg#1140, removendo expectativas obsoletas sobre ausência de ID e ordem dos atributos. Refs scieloorg#1258
Atualiza test_validate_multiple_sections_same_language para esperar WARNING quando as seções do periódico não são informadas. Remove o parâmetro obsoleto error_level_section, que não é consumido pelo validador atual. Refs scieloorg#1258
Substitui a diferença entre conjuntos em validate_mixed_citation_sub_tags por uma filtragem que mantém a ordem original das tags encontradas. Evita resultados não determinísticos em test_validate_mixed_citation_sub_tags_disallowed conforme o valor de PYTHONHASHSEED. Refs scieloorg#1258
Atualiza test_get_doi_information para o contrato introduzido no PR scieloorg#874, substituindo consultas reais ao Crossref por mock de fetch_data. Adiciona test_get_doi_information_request_error para cobrir falhas na requisição e test_handle_doi_response para preservar a cobertura do tratamento de títulos e autores. Evita dependência de rede e de dados externos mutáveis nos testes. Refs scieloorg#1258
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Corrige a baseline da suíte de testes de
packtools.sps.validation, conforme descrito na issue #1258.As alterações:
format_responseemjournal_meta.py;mixed-citation;footnotes;build_response()eformat_response();OK) de errosCRITICAL;peer_reviewpara as regras atuais derelated-article;handle_doi_response().Ao final, a suíte específica de validação passou de uma baseline com falhas e erros para:
Onde a revisão poderia começar?
Sugestão de ordem para revisão:
setup.py, para conferir as dependências utilizadas em runtime;packtools/sps/validation/journal_meta.py;packtools/sps/validation/article_license.py;packtools/sps/validation/references.py;tests/sps/validation/, onde foram atualizados os cenários e as respostas esperadas.Como este poderia ser testado manualmente?
Crie e ative um ambiente virtual:
python3.11 -m venv /tmp/packtools-dependency-test source /tmp/packtools-dependency-test/bin/activateInstale o projeto:
python -m pip install --upgrade pip python -m pip install -e ".[webapp]"Execute a suíte de validação SPS:
python -m unittest discover \ -s tests/sps/validation \ -p "test_*.py" \ -vResultado esperado:
Como verificação adicional de possíveis efeitos colaterais, também foi executada a suíte geral:
python -m unittest discover \ -s tests \ -p "test_*.py" \ -vA suíte geral ainda apresenta 34 falhas, 20 erros e 30 testes ignorados. As ocorrências observadas estão fora de
tests/sps/validatione incluem testes antigos de modelos, geradores HTML, utilitários XML, módulos removidos, fixtures ausentes e dependências de teste não instaladas.Essas ocorrências não foram corrigidas neste PR porque estão fora do escopo da issue #1258. Não foram identificadas novas falhas dentro da suíte de validação modificada por este PR.
Algum cenário de contexto que queira dar?
A baseline instável dificultava distinguir regressões reais de expectativas antigas, especialmente antes da implementação da internacionalização proposta na issue #1257.
Este PR não implementa a internacionalização. Ele prepara essa implementação ao:
message,advice,msg_text,msg_params,adv_texteadv_params;Na implementação da #1257, algumas expectativas de
msg_texteadv_textdeverão ser alteradas intencionalmente: esses campos passarão a representar templates traduzíveis, enquantomsg_paramseadv_paramscarregarão os valores de interpolação. Os campos legadosmessageeadvicedeverão continuar formatados em inglês para preservar compatibilidade retroativa.Screenshots
N/A
Quais são os tickets relevantes?
Resolve #1258.
Prepara a baseline necessária para #1257, sem implementar ainda a internacionalização.
Referências
packtools.sps.validationpacktools.sps.validation#1257 — Finalizar internacionalização das mensagens de validaçãoget_doi_informationrelated-articleSegurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
install_requires.Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
Status: pendente até a execução do pipeline do PR.
Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?