Verify releases use original Git objects
This commit is contained in:
@@ -402,6 +402,29 @@ func TestDeliverPageOnlySkipsBuildAndHostedAssets(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeliverUsesOriginalNoteWithBlobReplacement(t *testing.T) {
|
||||
repository := newTaggedDeliveryConsumer(t)
|
||||
original := buildGit(t, repository, "rev-parse", "HEAD:docs/releases/v1.2.3.md")
|
||||
replacementPath := filepath.Join(t.TempDir(), "note.md")
|
||||
if err := os.WriteFile(replacementPath, []byte("# Fixture v1.2.3\n\nReplacement note.\n"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
replacement := buildGit(t, repository, "hash-object", "-w", replacementPath)
|
||||
buildGit(t, repository, "replace", original, replacement)
|
||||
server, remote := newFacadeDeliveryServer(t, repository)
|
||||
defer server.Close()
|
||||
result, err := releasekit.Deliver(context.Background(), releasekit.DeliveryRequest{
|
||||
RepositoryDir: repository, Product: "Fixture", Version: "v1.2.3",
|
||||
Destination: facadeDeliveryDestination(server.URL),
|
||||
})
|
||||
if err != nil || result.State != releasekit.DeliveryComplete {
|
||||
t.Fatalf("delivery = %#v, error = %v", result, err)
|
||||
}
|
||||
if got := remote.snapshot().createdBody; got != "# Fixture v1.2.3\n\nDelivery fixture.\n" {
|
||||
t.Fatalf("delivered note = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeliverUsesCommittedModuleIdentityForSeparatePages(t *testing.T) {
|
||||
repository := newTwoModuleDeliveryConsumer(t)
|
||||
server, remote := newFacadeDeliveryServer(t, repository)
|
||||
@@ -817,6 +840,7 @@ type facadeDeliveryData struct {
|
||||
tag string
|
||||
version string
|
||||
noteBody string
|
||||
createdBody string
|
||||
pages map[string]bool
|
||||
requests int
|
||||
writes int
|
||||
@@ -876,6 +900,7 @@ func (state *facadeDeliveryServer) serveHTTP(w http.ResponseWriter, r *http.Requ
|
||||
if payload.Tag != data.tag || payload.Target != data.commit || payload.Name != "Fixture "+data.version {
|
||||
data.t.Errorf("release payload = %#v", payload)
|
||||
}
|
||||
data.createdBody = payload.Body
|
||||
data.pages[data.tag] = true
|
||||
state.writeRelease(w)
|
||||
case "/api/v1/repos/owner/example/releases/10/assets":
|
||||
|
||||
Reference in New Issue
Block a user