Expose Markdown validation selection

This commit is contained in:
2026-10-07 23:26:48 +00:00
parent 6397d41517
commit 40068af1bf
20 changed files with 403 additions and 23 deletions

View File

@@ -302,6 +302,62 @@ func TestCheckReturnsPublicValidationError(t *testing.T) {
}
}
func TestMarkdownValidationRunsThroughCheckAndPublish(t *testing.T) {
addBrokenMarkdownDestination := func(t *testing.T, repo publishFixture) {
t.Helper()
writeFile(t, repo.work, "guide.md", "[missing](missing.md#top)\n")
gitRun(t, repo.work, "add", "guide.md")
gitRun(t, repo.work, "commit", "-m", "add broken Markdown destination")
}
assertMarkdownFailure := func(t *testing.T, err error) {
t.Helper()
var failure *releasekit.ValidationError
if !errors.As(err, &failure) || failure.Check != "markdown-links" {
t.Fatalf("operation error = %v, want public markdown-links failure", err)
}
if len(failure.Findings) != 1 || failure.Findings[0].Path != "guide.md" || failure.Findings[0].Target != "missing.md#top" || failure.Findings[0].Line != 1 {
t.Fatalf("Markdown findings = %#v, want source location and target", failure.Findings)
}
}
t.Run("check", func(t *testing.T) {
repo := newPublishFixture(t)
addBrokenMarkdownDestination(t, repo)
_, err := releasekit.Check(context.Background(), releasekit.ReleaseRequest{
RepositoryDir: repo.work,
Product: "Sample App",
Version: "v1.2.3",
Validation: releasekit.ValidationSpec{Markdown: &releasekit.MarkdownValidationSpec{}},
})
assertMarkdownFailure(t, err)
})
t.Run("publish", func(t *testing.T) {
repo := newPublishFixture(t)
addBrokenMarkdownDestination(t, repo)
gitRun(t, repo.work, "config", "--unset", "remote.origin.mirror")
gitRun(t, repo.work, "push", "origin", "HEAD:refs/heads/main")
callbackCalls := 0
_, err := releasekit.Publish(context.Background(), releasekit.ReleaseRequest{
RepositoryDir: repo.work,
Product: "Sample App",
Version: "v1.2.3",
Validation: releasekit.ValidationSpec{Markdown: &releasekit.MarkdownValidationSpec{}},
AdditionalChecks: func(context.Context, releasekit.Candidate) error {
callbackCalls++
return nil
},
})
assertMarkdownFailure(t, err)
if callbackCalls != 0 {
t.Fatalf("additional checks called %d times after Markdown failure", callbackCalls)
}
if tag := gitText(t, repo.work, "tag", "--list", "v1.2.3"); tag != "" {
t.Fatalf("failed Markdown validation created tag %q", tag)
}
})
}
func TestPublishAdditionalCheckFailurePreservesCauseAndPreventsTagCreation(t *testing.T) {
repo := newPublishFixture(t)
suiteRuns := filepath.Join(t.TempDir(), "suite-runs")