Pin the json names of manifests, locks and inputs2 by the encoded bytes (issue 1442, review round 1)
mesh/merge-gate head 6f9a83646ab7 merged into trunk ab0c16ddad26 — pass, with a note: builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus …
mesh/repo-check head 6f9a83646ab7 merged into trunk ab0c16ddad26 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/delivery delivered
mesh/merge-gate head 6f9a83646ab7 merged into trunk ab0c16ddad26 — pass, with a note: builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus …
mesh/repo-check head 6f9a83646ab7 merged into trunk ab0c16ddad26 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/delivery delivered
Go decodes keys case-insensitively, so a round trip could not see a dropped tag; the encoded bytes now name each field and an older message re-encodes to its own bytes.
This commit is contained in:
@@ -21,6 +21,11 @@ func TestForgeMergedCarriesManifestsAndLocks(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
for _, frag := range []string{`"manifests":{"a":`, `"locks":{"a":{"go.sum":`} {
|
||||||
|
if !strings.Contains(string(data), frag) {
|
||||||
|
t.Errorf("the encoding lacks %s: %s", frag, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
got, err := DecodeForge(data)
|
got, err := DecodeForge(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@@ -97,8 +102,9 @@ func TestForgeFromAnOlderBridge(t *testing.T) {
|
|||||||
t.Fatalf("%+v, %v", f, err)
|
t.Fatalf("%+v, %v", f, err)
|
||||||
}
|
}
|
||||||
data, err := EncodeForge(f)
|
data, err := EncodeForge(f)
|
||||||
if err != nil || strings.Contains(string(data), "manifests") || strings.Contains(string(data), "locks") {
|
// the older message is written with the struct's key order, so the bytes compare as they are
|
||||||
t.Errorf("%s, %v", data, err)
|
if err != nil || string(data) != old {
|
||||||
|
t.Errorf("%s, %v, want exactly %s", data, err, old)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +119,9 @@ func TestModuleKeepsInputs2(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if !strings.Contains(string(data), `"inputs2":{"tree":"t1"`) {
|
||||||
|
t.Errorf("the encoding lacks inputs2: %s", data)
|
||||||
|
}
|
||||||
got, err := DecodeModule(data)
|
got, err := DecodeModule(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user