diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-27 00:43:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-28 22:00:54 +0900 |
| commit | 5e5826459ed744fc0bd717e0136614365c7a96f3 (patch) | |
| tree | 44c11b329eb750039b6e48cb0afba368874e42d5 /internal/app/state/data_test.go | |
| parent | 4a463b7f032961323baa0c5cc4bac0594a90ec42 (diff) | |
internal/app/state: improve handles internals
This replaces the Store interface with something better reflecting the underlying data format for #19. An implementation of Store is provided on top of the new code to ease transition.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/state/data_test.go')
| -rw-r--r-- | internal/app/state/data_test.go | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/internal/app/state/data_test.go b/internal/app/state/data_test.go index 49f0f52c..6ad91e53 100644 --- a/internal/app/state/data_test.go +++ b/internal/app/state/data_test.go @@ -17,15 +17,6 @@ import ( func TestEntryData(t *testing.T) { t.Parallel() - newTemplateState := func() *hst.State { - return &hst.State{ - ID: hst.ID(bytes.Repeat([]byte{0xaa}, len(hst.ID{}))), - PID: 0xcafebabe, - ShimPID: 0xdeadbeef, - Config: hst.Template(), - Time: time.Unix(0, 0), - } - } mustEncodeGob := func(e any) string { var buf bytes.Buffer @@ -80,8 +71,10 @@ func TestEntryData(t *testing.T) { // While the current implementation mostly is, it has randomised order // for iterating over maps, and hst.Config holds a map for environ. var got hst.State - if err := entryDecode(&buf, &got); err != nil { + if et, err := entryDecode(&buf, &got); err != nil { t.Fatalf("entryDecode: error = %v", err) + } else if stateEt := got.Enablements.Unwrap(); et != stateEt { + t.Fatalf("entryDecode: et = %x, state %x", et, stateEt) } if !reflect.DeepEqual(&got, tc.s) { t.Errorf("entryEncode: %x", buf.Bytes()) @@ -95,10 +88,12 @@ func TestEntryData(t *testing.T) { t.Parallel() var got hst.State - if err := entryDecode(strings.NewReader(tc.data), &got); !reflect.DeepEqual(err, tc.err) { + if et, err := entryDecode(strings.NewReader(tc.data), &got); !reflect.DeepEqual(err, tc.err) { t.Fatalf("entryDecode: error = %#v, want %#v", err, tc.err) } else if err != nil { return + } else if stateEt := got.Enablements.Unwrap(); et != stateEt { + t.Fatalf("entryDecode: et = %x, state %x", et, stateEt) } if !reflect.DeepEqual(&got, tc.s) { @@ -128,6 +123,17 @@ func TestEntryData(t *testing.T) { }) } +// newTemplateState returns the address of a new template [hst.State] struct. +func newTemplateState() *hst.State { + return &hst.State{ + ID: hst.ID(bytes.Repeat([]byte{0xaa}, len(hst.ID{}))), + PID: 0xcafebabe, + ShimPID: 0xdeadbeef, + Config: hst.Template(), + Time: time.Unix(0, 0), + } +} + // stubNErrorWriter returns an error for writes above a certain size. type stubNErrorWriter int |
