Expose Markdown validation selection
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user