30 lines
1.1 KiB
Go
30 lines
1.1 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.
|
|
|
|
// 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)
|
|
}
|
|
}
|