A dry run of an unreviewed branch was heard by the daemon like any build, registered, and its definition reached a machine (novox/hq issue 240). The mark now travels with the build and the daemon records, registers and plans nothing for it.
39 lines
1.5 KiB
Go
39 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/novox/mesh-controller/internal/link"
|
|
)
|
|
|
|
// A dry run's outcome is looked at, never taken in (novox/hq issue 240). The daemon here holds no
|
|
// store at all, so anything that tried to record or register would fail rather than pass quietly.
|
|
func TestADryRunsOutcomeIsTakenInByNothing(t *testing.T) {
|
|
err := builds{}.Built(t.Context(), link.BuildResult{
|
|
ID: "build-1", Repository: "ssh://forge/app.git", Ref: "unreviewed", Module: "app", DryRun: true,
|
|
Manifest: json.RawMessage(`{"module":"app","version":"1"}`),
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("a dry run's outcome was not simply set aside: %v", err)
|
|
}
|
|
}
|
|
|
|
// The mark survives the wire both ways: asked as a dry run, answered as one.
|
|
func TestTheDryRunMarkTravelsWithTheBuild(t *testing.T) {
|
|
raw, _ := json.Marshal(link.BuildRequest{ID: "build-1", Repository: "r", DryRun: true})
|
|
var asked link.BuildRequest
|
|
if err := json.Unmarshal(raw, &asked); err != nil || !asked.DryRun {
|
|
t.Fatalf("the request lost its dry-run mark: %s", raw)
|
|
}
|
|
raw, _ = json.Marshal(link.BuildResult{ID: "build-1", DryRun: true})
|
|
var answered link.BuildResult
|
|
if err := json.Unmarshal(raw, &answered); err != nil || !answered.DryRun {
|
|
t.Fatalf("the outcome lost its dry-run mark: %s", raw)
|
|
}
|
|
raw, _ = json.Marshal(link.BuildResult{ID: "build-2"})
|
|
if string(raw) != `{"id":"build-2","repository":"","on":""}` {
|
|
t.Fatalf("an ordinary outcome carries a dry-run mark: %s", raw)
|
|
}
|
|
}
|