- Rust 65.9%
- HTML 25.1%
- CSS 5.8%
- Shell 3.2%
|
All checks were successful
ci/woodpecker/push/pipelines Pipeline was successful
O .cargo/mutants.toml exclui todo arquivo deste crate, e com razão: não há lógica própria aqui. O lib.rs é bootstrap do Yew, o common.rs inteiro é um `pub use battleship_common::*;`, e o resto é componente de interface e transporte WebSocket. Com tudo excluído o cargo-mutants reporta "Found 0 mutants", e o .mutants-teto de 0 dizia "zero sobreviventes" quando o que houve foi zero medições. O arquivo sai, e o porquê fica escrito nos dois mutants.toml (o do crate e o do workspace) para que ninguém o recrie achando que esqueceram. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PhdPjHUuVhXaitwT4mG53t |
||
|---|---|---|
| .cargo | ||
| .githooks | ||
| .woodpecker | ||
| src | ||
| static | ||
| tests | ||
| .gitignore | ||
| Cargo.toml | ||
| IMPLEMENTATION_SUMMARY.md | ||
| index.html | ||
| LICENSE | ||
| README.md | ||
| SERVER_CHANGES.md | ||
battleship-client
Cliente web do Batalha Naval: Yew compilado para WebAssembly.
trunk serve # sobe o cliente
cargo test
As regras não moram aqui. Elas vêm de
battleship-common,
declarada como dependência git — é o que permite compilar este
repositório sozinho, sem o diretório irmão por perto. src/common.rs é
só um pub use dela: já houve uma cópia própria dos tipos aqui, ela
divergiu do servidor e quebrou o jogo, e tests/spider existe para
impedir que a cópia volte — ele compara byte a byte a serialização feita
pelo caminho do cliente com a feita pela biblioteca.
Os componentes Yew e o WebSocketService só executam dentro de um
navegador, então o pipeline não mede cobertura deste crate e a rodada de
mutação os exclui. Para cobri-los de verdade:
wasm-pack test --headless --firefox
Onde ele se encaixa
Este repositório contém só o cliente. Ele também entra como submódulo no
repositório
battleship,
que junta os três crates num workspace.
Verificações antes do commit
O .githooks/pre-commit roda aqui o que o Woodpecker roda no servidor. Ele
é gerado a partir do .woodpecker/pipelines.yml deste repositório, então os
comandos não podem divergir do CI. Ative uma vez por clone -- o hook é
versionado, a configuração que aponta para ele não é:
git config core.hooksPath .githooks
Roda tudo a cada git commit, do mais barato ao mais caro, e para no
primeiro que falhar: lint do pipeline, cargo fmt --check, clippy com -D warnings, build, testes, auditoria de dependências.
O teste de mutação só existe aqui. Ele saiu do pipeline: mutação
recompila o crate uma vez por mutante, e no runner isso eram dezenas de
minutos por push, num passo que ninguém acompanha enquanto espera. O teto
continua em .mutants-teto, versionado -- a regra não afrouxou, mudou de
lugar. É de longe a etapa mais lenta; para pular só ela:
PRE_COMMIT_SEM_MUTACAO=1 git commit ...
Para pular tudo, git commit --no-verify. Um hook que não se pode pular é
um hook que todo mundo desativa.
Licença
GPL-3.0-or-later. Veja LICENSE.