container/initremount: check path equivalence by value
All checks were successful
Test / Create distribution (push) Successful in 35s
Test / Sandbox (push) Successful in 2m11s
Test / Hakurei (push) Successful in 3m5s
Test / Hpkg (push) Successful in 4m6s
Test / Sandbox (race detector) (push) Successful in 4m24s
Test / Hakurei (race detector) (push) Successful in 5m3s
Test / Flake checks (push) Successful in 1m19s
All checks were successful
Test / Create distribution (push) Successful in 35s
Test / Sandbox (push) Successful in 2m11s
Test / Hakurei (push) Successful in 3m5s
Test / Hpkg (push) Successful in 4m6s
Test / Sandbox (race detector) (push) Successful in 4m24s
Test / Hakurei (race detector) (push) Successful in 5m3s
Test / Flake checks (push) Successful in 1m19s
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
c6397b941f
commit
51304b03af
@ -29,6 +29,11 @@ func (r *RemountOp) apply(*setupState) error {
|
|||||||
fmt.Sprintf("cannot remount %q:", r.Target))
|
fmt.Sprintf("cannot remount %q:", r.Target))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RemountOp) Is(op Op) bool { vr, ok := op.(*RemountOp); return ok && *r == *vr }
|
func (r *RemountOp) Is(op Op) bool {
|
||||||
|
vr, ok := op.(*RemountOp)
|
||||||
|
return ok && ((r == nil && vr == nil) ||
|
||||||
|
(r.Target != nil && vr.Target != nil && r.Target.Is(vr.Target)) &&
|
||||||
|
r.Flags == vr.Flags)
|
||||||
|
}
|
||||||
func (*RemountOp) prefix() string { return "remounting" }
|
func (*RemountOp) prefix() string { return "remounting" }
|
||||||
func (r *RemountOp) String() string { return fmt.Sprintf("%q flags %#x", r.Target, r.Flags) }
|
func (r *RemountOp) String() string { return fmt.Sprintf("%q flags %#x", r.Target, r.Flags) }
|
||||||
|
52
container/initremount_test.go
Normal file
52
container/initremount_test.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRemountOp(t *testing.T) {
|
||||||
|
checkOpsBuilder(t, []opsBuilderTestCase{
|
||||||
|
{"root", new(Ops).Remount(MustAbs("/"), syscall.MS_RDONLY), Ops{
|
||||||
|
&RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
})
|
||||||
|
|
||||||
|
checkOpIs(t, []opIsTestCase{
|
||||||
|
{"zero", new(RemountOp), new(RemountOp), false},
|
||||||
|
|
||||||
|
{"target differs", &RemountOp{
|
||||||
|
Target: MustAbs("/dev/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, false},
|
||||||
|
|
||||||
|
{"flags differs", &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY | syscall.MS_NODEV,
|
||||||
|
}, &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, false},
|
||||||
|
|
||||||
|
{"equals", &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, true},
|
||||||
|
})
|
||||||
|
|
||||||
|
checkOpMeta(t, []opMetaTestCase{
|
||||||
|
{"root", &RemountOp{
|
||||||
|
Target: MustAbs("/"),
|
||||||
|
Flags: syscall.MS_RDONLY,
|
||||||
|
}, "remounting", `"/" flags 0x1`},
|
||||||
|
})
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user