aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/testdata
diff options
context:
space:
mode:
Diffstat (limited to 'internal/pkg/testdata')
-rw-r--r--internal/pkg/testdata/main.go103
1 files changed, 103 insertions, 0 deletions
diff --git a/internal/pkg/testdata/main.go b/internal/pkg/testdata/main.go
new file mode 100644
index 00000000..d63acdbd
--- /dev/null
+++ b/internal/pkg/testdata/main.go
@@ -0,0 +1,103 @@
+//go:build testtool
+
+package main
+
+import (
+ "log"
+ "os"
+ "path"
+ "slices"
+
+ "hakurei.app/container/fhs"
+ "hakurei.app/container/vfs"
+)
+
+func main() {
+ log.SetFlags(0)
+ log.SetPrefix("testtool: ")
+
+ if wantArgs := []string{"testtool"}; !slices.Equal(os.Args, wantArgs) {
+ log.Fatalf("Args: %q, want %q", os.Args, wantArgs)
+ }
+ if wantEnv := []string{
+ "HAKUREI_TEST=1",
+ }; !slices.Equal(wantEnv, os.Environ()) {
+ log.Fatalf("Environ: %q, want %q", os.Environ(), wantEnv)
+ }
+ const wantExec = "/opt/bin/testtool"
+ if got, err := os.Executable(); err != nil {
+ log.Fatalf("Executable: error = %v", err)
+ } else if got != wantExec {
+ log.Fatalf("Executable: %q, want %q", got, wantExec)
+ }
+
+ var m *vfs.MountInfo
+ if f, err := os.Open(fhs.Proc + "self/mountinfo"); err != nil {
+ log.Fatalf("Open: error = %v", err)
+ } else {
+ err = vfs.NewMountInfoDecoder(f).Decode(&m)
+ closeErr := f.Close()
+ if err != nil {
+ log.Fatalf("Decode: error = %v", err)
+ }
+ if closeErr != nil {
+ log.Fatalf("Close: error = %v", err)
+ }
+ }
+
+ log.Println(m)
+ if m.Root != "/sysroot" || m.Target != "/" {
+ log.Fatal("unexpected root mount entry")
+ }
+ next := func() { m = m.Next; log.Println(m) }
+
+ next()
+ if path.Base(m.Root) != "OLBgp1GsljhM2TJ-sbHjaiH9txEUvgdDTAzHv2P24donTt6_529l-9Ua0vFImLlb" {
+ log.Fatal("unexpected file artifact checksum")
+ }
+
+ next()
+ if path.Base(m.Root) != "MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU" {
+ log.Fatal("unexpected artifact checksum")
+ }
+
+ next() // testtool artifact
+
+ next()
+ if path.Base(m.Root) !=
+ "oHuqV7p0v1Vd8IdAzjyYM8sfCS0P2LR5tfv5cb6Gbf2ZWUm8Ec-7hYPJ_qr183m7" || m.Target != "/work" {
+ log.Fatal("unexpected work mount entry")
+ }
+
+ next()
+ if path.Base(m.Root) !=
+ "oHuqV7p0v1Vd8IdAzjyYM8sfCS0P2LR5tfv5cb6Gbf2ZWUm8Ec-7hYPJ_qr183m7" || m.Target != "/tmp" {
+ log.Fatal("unexpected temp mount entry")
+ }
+
+ next()
+ if m.Root != "/" || m.Target != "/proc" || m.Source != "proc" || m.FsType != "proc" {
+ log.Fatal("unexpected proc mount entry")
+ }
+
+ next()
+ if m.Root != "/" || m.Target != "/dev" || m.Source != "devtmpfs" || m.FsType != "tmpfs" {
+ log.Fatal("unexpected dev mount entry")
+ }
+
+ for i := 0; i < 9; i++ { // private /dev entries
+ next()
+ }
+
+ if m.Next != nil {
+ log.Println("unexpected extra mount entries")
+ for m.Next != nil {
+ next()
+ }
+ os.Exit(1)
+ }
+
+ if err := os.WriteFile("check", []byte{0}, 0400); err != nil {
+ log.Fatal(err)
+ }
+}