aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/testdata/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/pkg/testdata/main.go')
-rw-r--r--internal/pkg/testdata/main.go64
1 files changed, 53 insertions, 11 deletions
diff --git a/internal/pkg/testdata/main.go b/internal/pkg/testdata/main.go
index dc50f388..f883aec7 100644
--- a/internal/pkg/testdata/main.go
+++ b/internal/pkg/testdata/main.go
@@ -12,6 +12,7 @@ import (
"strings"
"syscall"
+ "hakurei.app/container/check"
"hakurei.app/container/fhs"
"hakurei.app/container/vfs"
)
@@ -20,14 +21,24 @@ func main() {
log.SetFlags(0)
log.SetPrefix("testtool: ")
- var hostNet bool
- wantArgs := []string{"testtool"}
- if len(os.Args) == 2 {
- hostNet = true
- log.SetPrefix("testtool(net): ")
- wantArgs = []string{"testtool", "net"}
- }
- if !slices.Equal(os.Args, wantArgs) {
+ var hostNet, layers bool
+ if len(os.Args) == 2 && os.Args[0] == "testtool" {
+ switch os.Args[1] {
+ case "net":
+ hostNet = true
+ log.SetPrefix("testtool(net): ")
+ break
+
+ case "layers":
+ layers = true
+ log.SetPrefix("testtool(layers): ")
+ break
+
+ default:
+ log.Fatalf("Args: %q", os.Args)
+ return
+ }
+ } else if wantArgs := []string{"testtool"}; !slices.Equal(os.Args, wantArgs) {
log.Fatalf("Args: %q, want %q", os.Args, wantArgs)
}
@@ -35,7 +46,9 @@ func main() {
wantEnv := []string{"HAKUREI_TEST=1"}
if len(os.Environ()) == 2 {
overlayRoot = true
- log.SetPrefix("testtool(overlay root): ")
+ if !layers {
+ log.SetPrefix("testtool(overlay root): ")
+ }
wantEnv = []string{"HAKUREI_TEST=1", "HAKUREI_ROOT=1"}
}
if !slices.Equal(wantEnv, os.Environ()) {
@@ -116,8 +129,37 @@ func main() {
lowerdir = o[len(lowerdirKey):]
}
}
- if path.Base(lowerdir) != checksumEmptyDir {
- log.Fatal("unexpected artifact checksum")
+ if !layers {
+ if path.Base(lowerdir) != checksumEmptyDir {
+ log.Fatal("unexpected artifact checksum")
+ }
+ } else {
+ ident = "o4z73RXEjkF5BBoXYg4WZ3c4VCjwvfJtPKFrstFHcEQxkVDoWTtdc5TMXigFvTsF"
+
+ lowerdirsEscaped := strings.Split(lowerdir, ":")
+ lowerdirs := lowerdirsEscaped[:0]
+ // ignore the option separator since it does not appear in ident
+ for i, e := range lowerdirsEscaped {
+ if len(e) > 0 &&
+ e[len(e)-1] == check.SpecialOverlayEscape[0] &&
+ (len(e) == 1 || e[len(e)-2] != check.SpecialOverlayEscape[0]) {
+ // ignore escaped pathname separator since it does not
+ // appear in ident
+
+ e = e[:len(e)-1]
+ if len(lowerdirsEscaped) != i {
+ lowerdirsEscaped[i+1] = e + lowerdirsEscaped[i+1]
+ continue
+ }
+ }
+ lowerdirs = append(lowerdirs, e)
+ }
+
+ if len(lowerdirs) != 2 ||
+ path.Base(lowerdirs[0]) != "MGWmEfjut2QE2xPJwTsmUzpff4BN_FEnQ7T0j7gvUCCiugJQNwqt9m151fm9D1yU" ||
+ path.Base(lowerdirs[1]) != "nY_CUdiaUM1OL4cPr5TS92FCJ3rCRV7Hm5oVTzAvMXwC03_QnTRfQ5PPs7mOU9fK" {
+ log.Fatalf("unexpected lowerdirs %s", strings.Join(lowerdirs, ", "))
+ }
}
} else {
if hostNet {