Pular para conteúdo

Desenvolvimento

go build -o nfse ./cmd/nfse   # compilar
go test -short ./...          # rápida (~2s), pulando os testes dependentes de relógio
go test ./...                 # suíte completa (~75s: inclui testes de backoff reais)
go vet ./...
gofmt -l ./cmd ./internal ./pkg

Testes de contrato

Os clientes da BrasilAPI e do IBGE foram escritos a partir da documentação desses serviços, e os testes de unidade usam servidores locais. Os testes de contrato conferem as respostas reais e ficam desligados por padrão; a CI os roda quando os clientes mudam, toda semana e sob demanda:

NFSE_TESTE_CONTRATO=1 go test -run Contrato -v ./internal/infrastructure/brasilapi/ ./internal/infrastructure/ibge/

# para conferir também as opções pelo MEI e pelo Simples de um MEI de verdade
NFSE_TESTE_CONTRATO=1 NFSE_TESTE_CNPJ_MEI=<cnpj> go test -run Contrato -v ./internal/infrastructure/brasilapi/

Este site

As páginas escritas à mão estão em site/conteudo/. As que vêm do repositório — os códigos de rejeição, as decisões e o changelog — são geradas por internal/sitegen e não ficam no repositório. Por quê: ADR 0016.

go run ./internal/sitegen                 # gera as páginas derivadas
python -m pip install -r site/requirements.txt
cd site
zensical serve                            # prévia em http://localhost:8000
zensical build --strict                   # o que a CI roda

O site é publicado pelo workflow pages.yml a cada mudança no master. Nos pull requests, ele só é construído, com --strict: um link quebrado reprova a mudança.

Os exemplos das páginas passam pelos mesmos testes do README (internal/docs): uma chave de acesso ou um código de serviço que o nfse recusaria reprova a suíte.