Skip to content

Horse 3.3.14

Latest

Choose a tag to compare

@regyssilveira regyssilveira released this 14 Oct 01:14
84194a3

Correções

  • Corrige a propagação de Exception e EHorseException nos roteadores Tree e Radix: middlewares que envolvem Next podem capturar e personalizar os erros das rotas e dos callbacks internos. (#616)
  • Aplica o tratamento padrão do core somente após a exceção escapar da cadeia: mantém JSON/status de EHorseException, OnError para outras exceções e o fallback 500 quando ainda não existe resposta de erro.
  • Preserva o controle de fluxo de EHorseCallbackInterrupted, respostas de erro existentes e o envio dos cookies no fallback do Radix.

Proteção contra regressões

  • Adiciona 36 casos DUnitX (18 por roteador) e 34 casos procedurais FPC (17 por roteador).
  • Cobre os dois tipos de exceção, callbacks posteriores, middlewares internos, prioridade do middleware sobre OnError, relançamento, fallback, JSON/status/Content-Type, interrupções e cookies (DUnitX).
  • O teste FPC reproduziu 18 falhas na versão anterior; com a correção, os 34 casos passam nas configurações padrão e Epoll, sem blocos de memória não liberados.
  • Integra as regressões FPC ao GitHub Actions. O job Linux utiliza as suítes portáveis de FPC; a suíte Delphi/DUnitX é executada localmente com Delphi.

Validação

  • Delphi 10 Seattle e Delphi 13 Florence, Tree/Radix: 95 testes por combinação, sem falhas ou erros.

  • Na versão preparada 3.3.14: Delphi 13 Tree/Radix, 95 testes por configuração; FPC 3.2.2/Linux x86_64, 34 testes por configuração (padrão/Epoll), sem vazamentos detectados pelo heaptrc.

  • HORSE_VERSION e THorse.Version conferidos como 3.3.14 no Delphi 10, Delphi 13 e FPC 3.2.2.

  • As regressões FPC de propagação exercitam os roteadores diretamente; os testes de API HTTP e lifecycle hooks foram executados em Delphi.

  • GitHub Actions: os jobs test e fpc-trunk-keepalive passaram tanto na PR da correção (#616) quanto na PR da versão (#617). Validação da versão: https://github.com/HashLoad/horse/actions/runs/38494183471.

Comportamento esperado

Um middleware que trata exceções pode agora definir sua própria resposta tanto para EHorseException quanto para Exception. Se nenhum middleware tratar o erro, ou se ele for relançado, o core aplica seu fallback. Aplicações que antes dependiam de o core interceptar o erro antes do middleware observarão essa correção de comportamento.

Comparação: 3.3.13...3.3.14