ref:df64bdba293e839bce31461f0335c95ee94c437f

test: remove @tag skip: from protocol coverage tests

Tests assert the correct behaviour and fail if the code doesn't meet it. That's the point. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
SHA: df64bdba293e839bce31461f0335c95ee94c437f
Author: Cole Christensen <cole.christensen@macmillan.com>
Date: 2026-04-19 00:07
Parents: 7991e72
5 files changed +0 -25
Type
test/ex_git_objectstore/integration/receive_pack_git_client_test.exs +0 −1
@@ -192,7 +192,6 @@
# batch if any one update would fail (invalid ref name, hook
# rejection, non-ff without --force, etc.).
@tag :tmp_dir
@tag skip: "ReceivePack does not yet implement `atomic` capability; #TBD"
test "atomic push rejects the whole batch when one ref is bad",
%{tmp_dir: tmp_dir} do
{port, stop, repo} = seeded_receive_pack("atomic", [{"a.txt", "v1\n"}])
test/ex_git_objectstore/integration/smart_http_test.exs +0 −1
@@ -227,7 +227,6 @@
# invocations. This test hand-crafts the POST body so the
# `haves ≠ [] + done = true` case is exercised deterministically.
@tag :tmp_dir
@tag skip: "fails against current main (omit-acks bug); tracked in ex_git_objectstore PR #19"
test "POST /git-upload-pack with unmatched haves + done", _ctx do
repo = make_linear_repo("http-direct", 1)
{port, stop} = GitDaemon.start_http_smart(repo)
test/ex_git_objectstore/integration/upload_pack_v2_capabilities_test.exs +0 −12
@@ -17,10 +17,6 @@
Real-git-client validation of the capabilities UploadPackV2 advertises
(or should advertise) — one test per ls-refs / fetch option, so every
advertised capability has a client-facing assertion.
Tests that target a capability we don't yet implement are marked
`@tag skip: "..."` with a note on what's missing. They are live
tracking regressions for future work.
"""
use ExUnit.Case, async: false
@@ -36,7 +32,6 @@
describe "ls-refs" do
@tag :tmp_dir
@tag skip: "UploadPackV2 does not advertise HEAD nor resolve `symrefs` arg"
test "symrefs resolves HEAD to its target branch", %{tmp_dir: tmp_dir} do
repo = make_linear_repo("symrefs", 1)
{port, stop} = GitDaemon.start_upload_pack(repo)
@@ -62,7 +57,6 @@
end
@tag :tmp_dir
@tag skip: "UploadPackV2.handle_ls_refs ignores the `peel` argument"
test "peel exposes annotated tag targets", %{tmp_dir: tmp_dir} do
repo = RepoHelper.memory_repo("peel")
ExGitObjectstore.init(repo)
@@ -104,7 +98,6 @@
end
@tag :tmp_dir
@tag skip: "UploadPackV2 does not honour the `unborn` ls-refs arg"
test "unborn reports an unborn HEAD for an empty repo", %{tmp_dir: tmp_dir} do
repo = RepoHelper.memory_repo("unborn")
ExGitObjectstore.init(repo)
@@ -165,7 +158,6 @@
describe "shallow fetch" do
@tag :tmp_dir
@tag skip: "fetch=shallow advertised but UploadPackV2 does not emit `shallow-info`"
test "--depth=1 clone returns only the tip commit", %{tmp_dir: tmp_dir} do
repo = make_linear_repo("shallow-d1", 5)
{port, stop} = GitDaemon.start_upload_pack(repo)
@@ -193,7 +185,6 @@
end
@tag :tmp_dir
@tag skip: "shallow-info section not implemented; deepen depends on it"
test "--deepen=3 after shallow clone pulls additional history",
%{tmp_dir: tmp_dir} do
repo = make_linear_repo("deepen", 5)
@@ -233,7 +224,6 @@
describe "partial clone (--filter)" do
@tag :tmp_dir
@tag skip: "no `filter` capability advertised; UploadPackV2 always sends full pack"
test "--filter=blob:none produces a blobless pack", %{tmp_dir: tmp_dir} do
repo = make_linear_repo("filter-blob", 3)
{port, stop} = GitDaemon.start_upload_pack(repo)
@@ -266,7 +256,6 @@
end
@tag :tmp_dir
@tag skip: "no `filter` capability advertised; tree:0 shape will be rejected"
test "--filter=tree:0 produces a treeless pack", %{tmp_dir: tmp_dir} do
repo = make_linear_repo("filter-tree", 3)
{port, stop} = GitDaemon.start_upload_pack(repo)
@@ -294,7 +283,6 @@
describe "wait-for-done" do
@tag :tmp_dir
@tag skip: "wait-for-done capability not advertised by UploadPackV2"
test "client --negotiate-only uses wait-for-done when available",
%{tmp_dir: tmp_dir} do
repo = make_linear_repo("wfd", 3)
test/ex_git_objectstore/integration/upload_pack_v2_dataplane_test.exs +0 −6
@@ -209,12 +209,6 @@
# UploadPackV2 sliced at arbitrary offsets for 20 different seeds.
# The concatenated response output MUST match the response from
# feeding the request as a single blob.
#
# Currently fails: `has_complete_command?` treats the intra-command
# delim (`0001`) as a terminator, so chunking that splits after
# delim but before flush causes premature processing. Tracked in
# https://anvil.fangorn.io/fangorn/ex_git_objectstore/issues/29
@tag skip: "issue #29 — has_complete_command? treats delim as terminator"
test "fetch request response is invariant under TCP chunking" do
repo = RepoHelper.memory_repo("split")
ExGitObjectstore.init(repo)
test/ex_git_objectstore/integration/upload_pack_v2_negotiation_test.exs +0 −5
@@ -22,10 +22,6 @@
* multi-round (client does not send `done` in the first request)
* `--negotiate-only` (client wants ACKs only, no packfile)
* concurrent push + fetch on the same listener
Tests for protocol paths we don't yet handle correctly are marked
with `@tag skip: "..."` and carry a note about the missing feature
(and a tracking-issue link where applicable).
"""
use ExUnit.Case, async: false
@@ -238,7 +234,6 @@
# have in common, do not send a packfile". The server must emit an
# acks section ending with a flush (no `ready`, no packfile).
@tag :tmp_dir
@tag skip: "requires `wait-for-done` capability — not yet advertised by UploadPackV2"
test "negotiate-only returns ACKs without a packfile", %{tmp_dir: tmp_dir} do
repo =
fresh_repo("neg-only", [