From b0d06b67dc85d79d104a6bdbea1f627aa09c79a8 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 6 May 2026 06:22:28 +0900 Subject: [PATCH] internal/pkg: centralise exec testdata checksums This significantly reduces maintenance burden. Signed-off-by: Ophestra --- .gitignore | 2 +- internal/pkg/exec_test.go | 25 ++++++++++--------- .../pkg/internal/testtool/expected/doc.go | 2 ++ .../internal/testtool/expected/sum_amd64.go | 10 ++++++++ .../{testdata => internal/testtool}/main.go | 14 ++++++----- 5 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 internal/pkg/internal/testtool/expected/doc.go create mode 100644 internal/pkg/internal/testtool/expected/sum_amd64.go rename internal/pkg/{testdata => internal/testtool}/main.go (92%) diff --git a/.gitignore b/.gitignore index 96094d86..b9012eda 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ # go generate /cmd/hakurei/LICENSE /cmd/mbf/internal/pkgserver/ui/static -/internal/pkg/testdata/testtool +/internal/pkg/internal/testtool/testtool /internal/rosa/hakurei_current.tar.gz # cmd/dist default destination diff --git a/internal/pkg/exec_test.go b/internal/pkg/exec_test.go index 604c5022..5d2905d4 100644 --- a/internal/pkg/exec_test.go +++ b/internal/pkg/exec_test.go @@ -1,7 +1,5 @@ package pkg_test -//go:generate env CGO_ENABLED=0 go build -tags testtool -o testdata/testtool ./testdata - import ( _ "embed" "encoding/gob" @@ -18,12 +16,15 @@ import ( "hakurei.app/hst" "hakurei.app/internal/pkg" "hakurei.app/internal/stub" + + "hakurei.app/internal/pkg/internal/testtool/expected" ) // testtoolBin is the container test tool binary made available to the // execArtifact for testing its curing environment. // -//go:embed testdata/testtool +//go:generate env CGO_ENABLED=0 go build -tags testtool -o internal/testtool ./internal/testtool +//go:embed internal/testtool/testtool var testtoolBin []byte func TestExec(t *testing.T) { @@ -123,7 +124,7 @@ func TestExec(t *testing.T) { "identifier": {Mode: fs.ModeDir | 0700}, "identifier/_gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/OLBgp1GsljhM2TJ-sbHjaiH9txEUvgdDTAzHv2P24donTt6_529l-9Ua0vFImLlb")}, - "identifier/dztPS6jRjiZtCF4_p8AzfnxGp6obkhrgFVsxdodbKWUoAEVtDz3MykepJB4kI_ks": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, + "identifier/" + expected.Offline: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, "temp": {Mode: fs.ModeDir | 0700}, @@ -173,8 +174,8 @@ func TestExec(t *testing.T) { "checksum/a1F_i9PVQI4qMcoHgTQkORuyWLkC1GLIxOhDt2JpU1NGAxWc5VJzdlfRK-PYBh3W": {Mode: fs.ModeDir | 0500}, "checksum/a1F_i9PVQI4qMcoHgTQkORuyWLkC1GLIxOhDt2JpU1NGAxWc5VJzdlfRK-PYBh3W/check": {Mode: 0400, Data: []byte("net")}, - "identifier": {Mode: fs.ModeDir | 0700}, - "identifier/G8qPxD9puvvoOVV7lrT80eyDeIl3G_CCFoKw12c8mCjMdG1zF7NEPkwYpNubClK3": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/a1F_i9PVQI4qMcoHgTQkORuyWLkC1GLIxOhDt2JpU1NGAxWc5VJzdlfRK-PYBh3W")}, + "identifier": {Mode: fs.ModeDir | 0700}, + "identifier/" + expected.Net: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/a1F_i9PVQI4qMcoHgTQkORuyWLkC1GLIxOhDt2JpU1NGAxWc5VJzdlfRK-PYBh3W")}, "identifier/_gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/OLBgp1GsljhM2TJ-sbHjaiH9txEUvgdDTAzHv2P24donTt6_529l-9Ua0vFImLlb")}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, @@ -213,8 +214,8 @@ func TestExec(t *testing.T) { "checksum/" + wantOfflineEncode + "/check": {Mode: 0400, Data: []byte{0}}, "checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU": {Mode: fs.ModeDir | 0500}, - "identifier": {Mode: fs.ModeDir | 0700}, - "identifier/RdMA-mubnrHuu3Ky1wWyxauSYCO0ZH_zCPUj3uDHqkfwv5sGcByoF_g5PjlGiClb": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, + "identifier": {Mode: fs.ModeDir | 0700}, + "identifier/" + expected.OvlRoot: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, "temp": {Mode: fs.ModeDir | 0700}, @@ -257,8 +258,8 @@ func TestExec(t *testing.T) { "checksum/" + wantOfflineEncode + "/check": {Mode: 0400, Data: []byte{0}}, "checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU": {Mode: fs.ModeDir | 0500}, - "identifier": {Mode: fs.ModeDir | 0700}, - "identifier/5hlaukCirnXE4W_RSLJFOZN47Z5RiHnacXzdFp_70cLgiJUGR6cSb_HaFftkzi0-": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, + "identifier": {Mode: fs.ModeDir | 0700}, + "identifier/" + expected.Work: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, "temp": {Mode: fs.ModeDir | 0700}, @@ -329,7 +330,7 @@ func TestExec(t *testing.T) { "identifier": {Mode: fs.ModeDir | 0700}, "identifier/_gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/OLBgp1GsljhM2TJ-sbHjaiH9txEUvgdDTAzHv2P24donTt6_529l-9Ua0vFImLlb")}, "identifier/B-kc5iJMx8GtlCua4dz6BiJHnDAOUfPjgpbKq4e-QEn0_CZkSYs3fOA1ve06qMs2": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/nY_CUdiaUM1OL4cPr5TS92FCJ3rCRV7Hm5oVTzAvMXwC03_QnTRfQ5PPs7mOU9fK")}, - "identifier/p1t_drXr34i-jZNuxDMLaMOdL6tZvQqhavNafGynGqxOZoXAUTSn7kqNh3Ovv3DT": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, + "identifier/" + expected.Layers: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, "temp": {Mode: fs.ModeDir | 0700}, @@ -376,7 +377,7 @@ func TestExec(t *testing.T) { "identifier": {Mode: fs.ModeDir | 0700}, "identifier/kvJIqZo5DKFOxC2ZQ-8_nPaQzEAz9cIm3p6guO-uLqm-xaiPu7oRkSnsu411jd_U": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, "identifier/vjz1MHPcGBKV7sjcs8jQP3cqxJ1hgPTiQBMCEHP9BGXjGxd-tJmEmXKaStObo5gK": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU")}, - "identifier/xXTIYcXmgJWNLC91c417RRrNM9cjELwEZHpGvf8Fk_GNP5agRJp_SicD0w9aMeLJ": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, + "identifier/" + expected.Promote: {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantOfflineEncode)}, "temp": {Mode: fs.ModeDir | 0700}, "work": {Mode: fs.ModeDir | 0700}, diff --git a/internal/pkg/internal/testtool/expected/doc.go b/internal/pkg/internal/testtool/expected/doc.go new file mode 100644 index 00000000..53978d26 --- /dev/null +++ b/internal/pkg/internal/testtool/expected/doc.go @@ -0,0 +1,2 @@ +// Package expected contains expected identifiers for exec artifact tests. +package expected diff --git a/internal/pkg/internal/testtool/expected/sum_amd64.go b/internal/pkg/internal/testtool/expected/sum_amd64.go new file mode 100644 index 00000000..a9baee09 --- /dev/null +++ b/internal/pkg/internal/testtool/expected/sum_amd64.go @@ -0,0 +1,10 @@ +package expected + +const ( + Offline = "dztPS6jRjiZtCF4_p8AzfnxGp6obkhrgFVsxdodbKWUoAEVtDz3MykepJB4kI_ks" + OvlRoot = "RdMA-mubnrHuu3Ky1wWyxauSYCO0ZH_zCPUj3uDHqkfwv5sGcByoF_g5PjlGiClb" + Layers = "p1t_drXr34i-jZNuxDMLaMOdL6tZvQqhavNafGynGqxOZoXAUTSn7kqNh3Ovv3DT" + Net = "G8qPxD9puvvoOVV7lrT80eyDeIl3G_CCFoKw12c8mCjMdG1zF7NEPkwYpNubClK3" + Promote = "xXTIYcXmgJWNLC91c417RRrNM9cjELwEZHpGvf8Fk_GNP5agRJp_SicD0w9aMeLJ" + Work = "5hlaukCirnXE4W_RSLJFOZN47Z5RiHnacXzdFp_70cLgiJUGR6cSb_HaFftkzi0-" +) diff --git a/internal/pkg/testdata/main.go b/internal/pkg/internal/testtool/main.go similarity index 92% rename from internal/pkg/testdata/main.go rename to internal/pkg/internal/testtool/main.go index 564a1736..6b665d9d 100644 --- a/internal/pkg/testdata/main.go +++ b/internal/pkg/internal/testtool/main.go @@ -16,6 +16,8 @@ import ( "hakurei.app/fhs" "hakurei.app/vfs" + + "hakurei.app/internal/pkg/internal/testtool/expected" ) func main() { @@ -147,12 +149,12 @@ func main() { } const checksumEmptyDir = "MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU" - ident := "dztPS6jRjiZtCF4_p8AzfnxGp6obkhrgFVsxdodbKWUoAEVtDz3MykepJB4kI_ks" + ident := expected.Offline log.Println(m) next := func() { m = m.Next; log.Println(m) } if overlayRoot { - ident = "RdMA-mubnrHuu3Ky1wWyxauSYCO0ZH_zCPUj3uDHqkfwv5sGcByoF_g5PjlGiClb" + ident = expected.OvlRoot if m.Root != "/" || m.Target != "/" || m.Source != "overlay" || m.FsType != "overlay" { @@ -170,7 +172,7 @@ func main() { log.Fatal("unexpected artifact checksum") } } else { - ident = "p1t_drXr34i-jZNuxDMLaMOdL6tZvQqhavNafGynGqxOZoXAUTSn7kqNh3Ovv3DT" + ident = expected.Layers if len(lowerdir) != 2 || filepath.Base(lowerdir[0]) != "MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU" || @@ -180,7 +182,7 @@ func main() { } } else { if hostNet { - ident = "G8qPxD9puvvoOVV7lrT80eyDeIl3G_CCFoKw12c8mCjMdG1zF7NEPkwYpNubClK3" + ident = expected.Net } if m.Root != "/sysroot" || m.Target != "/" { @@ -199,14 +201,14 @@ func main() { } if promote { - ident = "xXTIYcXmgJWNLC91c417RRrNM9cjELwEZHpGvf8Fk_GNP5agRJp_SicD0w9aMeLJ" + ident = expected.Promote } next() // testtool artifact next() if overlayWork { - ident = "5hlaukCirnXE4W_RSLJFOZN47Z5RiHnacXzdFp_70cLgiJUGR6cSb_HaFftkzi0-" + ident = expected.Work if m.Root != "/" || m.Target != "/work" || m.Source != "overlay" || m.FsType != "overlay" { log.Fatal("unexpected work mount entry")