aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/state/data_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-10-27 00:43:33 +0900
committerOphestra <cat@gensokyo.uk>2025-10-28 22:00:54 +0900
commit5e5826459ed744fc0bd717e0136614365c7a96f3 (patch)
tree44c11b329eb750039b6e48cb0afba368874e42d5 /internal/app/state/data_test.go
parent4a463b7f032961323baa0c5cc4bac0594a90ec42 (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.go28
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