Skip to content

fix: perguntar o namespace antes de listar/regerar bases de teste - #141

Merged
ricxJr merged 1 commit into
masterfrom
fix/namespace-gerenciar-bases-teste
Sep 16, 2026
Merged

ricxJr merged 1 commit into
masterfrom
fix/namespace-gerenciar-bases-teste

Conversation

@ricxJr

@ricxJr ricxJr commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Problema

GET /namespaces/:nsReq/unitTests/bases roda dentro do namespace que a extensão manda na URL, e o comando Gerenciar Bases de Teste mandava o namespace do workspace folder ativo (currentWorkspaceFolder()). Com um arquivo de projetos/DESENV aberto, a consulta ia para DESENV, onde ^%CSW1BASE não existe:

namespace $d(^%CSW1BASE) ListarBasesComTeste
DESENV 0 vazio
DESENV80 10 LDB80-001, LDB80-002
DESENV81 10 LDB81-001

O backend devolve 200 {"bases":[]} nesse caso, e a extensão mostrava "Nenhuma base de teste montada nesta instalação" — indistinguível de "não há bases montadas". Ao executar os testes o namespace vinha da classe de teste (projetos/8.0DESENV80) e a lista aparecia, o que dava a impressão de cache ou de estado criado pela execução. Não é: é namespace diferente na requisição.

Mudança

Em gerenciarBasesTeste (src/commands/unitTest.ts):

  • Namespace perguntado antes de mandarcurrentWorkspaceFolder() deu lugar a getWsFolder(..., active = true), o mesmo helper que o comando de criar item usa. Com mais de um folder conectado abre o QuickPick; com um só, resolve direto.
  • O namespace escolhido vale para tudonsConsulta é usado em listarBasesTeste, regerarBaseTeste e no polling de situacaoGeracaoBase. Antes o api.ns vinha de um AtelierAPI construído sobre uma uri que podia ser undefined.
  • Lista vazia deixou de ser ambígua — a mensagem nomeia o namespace consultado, explica que bases são registradas por namespace e oferece "Escolher outro namespace", que reabre a escolha.
  • Rastro visível do namespace — título do progresso (Consultando bases de teste em DESENV80…) e do QuickPick (Bases de teste montadas · consultado em DESENV80).

Fora do escopo

Os silenciamentos são server-side, em VSCodeTesteUnitarioBase.cls / VSCodeTesteUnitarioCatalogo.cls (repositório sourcecontrol20), e continuam valendo:

  1. ^%CSW1BASE inacessível no namespace da requisição → $order não itera e o método devolve $$$OK com tabela vazia.
  2. if $$$ISERR(sc) continue no ValidarBase → base com dados inconsistentes some da lista sem mensagem.
  3. if (qtdClasses = 0) continue → base cujas classes UT estão todas com useMock desaparece do menu, mesmo montada.

O ajuste natural lá seria o endpoint devolver gerenciamentoDisponivel: false quando o global não existe no namespace, mais uma lista de avisos para as bases descartadas — com isso a extensão troca a mensagem genérica por "o namespace X não gerencia bases de teste".

Testes

npx tsc --noEmit, npx eslint src/commands/unitTest.ts e npx prettier --check src/commands/unitTest.ts passam. Sem cobertura automatizada para este comando; validação manual pendente num workspace multi-root (DESENV + 8.0).

🤖 Generated with Claude Code

O comando "Gerenciar Bases de Teste" herdava o namespace do workspace
folder ativo (currentWorkspaceFolder), então a rota
GET /namespaces/:ns/unitTests/bases rodava no namespace do arquivo que
estivesse aberto. Num namespace de fontes sem ^%CSW1BASE o backend
devolve 200 {"bases":[]}, e a extensão mostrava "Nenhuma base de teste
montada nesta instalação" — indistinguível de "não há bases".

Agora o namespace é escolhido explicitamente via getWsFolder, o mesmo
helper usado pelo comando de criar item, e vale para listar, regerar e
para o polling da situação da geração. A mensagem de lista vazia nomeia
o namespace consultado e oferece trocar de namespace; o namespace também
aparece no título do progresso e do QuickPick.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ricxJr
ricxJr merged commit 6e2992d into master Sep 16, 2026
2 checks passed
@ricxJr
ricxJr deleted the fix/namespace-gerenciar-bases-teste branch September 16, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant