diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-07 15:18:28 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-07 15:22:52 +0900 |
| commit | e4355279a1624833e36455a1a85788dbe091464e (patch) | |
| tree | 7ba95bbd813f54cbabcaaf4cec5b004f8dbe72da /internal | |
| parent | 289fdebead872b1b011b8fe892d43a2f234703d1 (diff) | |
all: optionally forbid degrading in tests
This enables transparently degradable tests to be forced on in environments known to support them.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/acl/acl_test.go | 12 | ||||
| -rw-r--r-- | internal/info/optional_skip.go | 7 | ||||
| -rw-r--r-- | internal/info/optional_strict.go | 5 | ||||
| -rw-r--r-- | internal/pkg/pkg_test.go | 14 |
4 files changed, 31 insertions, 7 deletions
diff --git a/internal/acl/acl_test.go b/internal/acl/acl_test.go index 5f5447ba..60c4b702 100644 --- a/internal/acl/acl_test.go +++ b/internal/acl/acl_test.go @@ -11,9 +11,11 @@ import ( "path/filepath" "reflect" "strconv" + "syscall" "testing" "hakurei.app/internal/acl" + "hakurei.app/internal/info" ) const testFileName = "acl.test" @@ -24,8 +26,14 @@ var ( ) func TestUpdate(t *testing.T) { - if os.Getenv("HAKUREI_TEST_SKIP_ACL") == "1" { - t.Skip("acl test skipped") + if info.CanDegrade { + name := filepath.Join(t.TempDir(), "check-degrade") + if err := os.WriteFile(name, nil, 0); err != nil { + t.Fatal(err) + } + if err := acl.Update(name, os.Geteuid()); errors.Is(err, syscall.ENOTSUP) { + t.Skip(err) + } } testFilePath := filepath.Join(t.TempDir(), testFileName) diff --git a/internal/info/optional_skip.go b/internal/info/optional_skip.go new file mode 100644 index 00000000..c09a698f --- /dev/null +++ b/internal/info/optional_skip.go @@ -0,0 +1,7 @@ +//go:build !noskip + +package info + +// CanDegrade is whether tests are allowed to transparently degrade or skip due +// to required system features being denied or unavailable. +const CanDegrade = true diff --git a/internal/info/optional_strict.go b/internal/info/optional_strict.go new file mode 100644 index 00000000..f288b78e --- /dev/null +++ b/internal/info/optional_strict.go @@ -0,0 +1,5 @@ +//go:build noskip + +package info + +const CanDegrade = false diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go index 4fce4b1e..e1deaf3d 100644 --- a/internal/pkg/pkg_test.go +++ b/internal/pkg/pkg_test.go @@ -24,6 +24,7 @@ import ( "hakurei.app/check" "hakurei.app/container" "hakurei.app/fhs" + "hakurei.app/internal/info" "hakurei.app/internal/pkg" "hakurei.app/internal/stub" "hakurei.app/message" @@ -290,12 +291,15 @@ func checkWithCache(t *testing.T, testCases []cacheTestCase) { msg.SwapVerbose(testing.Verbose()) flags := tc.flags - if _, err := container.LandlockGetABI(); err != nil { - if !errors.Is(err, syscall.ENOSYS) { - t.Fatalf("LandlockGetABI: error = %v", err) + + if info.CanDegrade { + if _, err := container.LandlockGetABI(); err != nil { + if !errors.Is(err, syscall.ENOSYS) { + t.Fatalf("LandlockGetABI: error = %v", err) + } + flags |= pkg.CHostAbstract + t.Log("Landlock LSM is unavailable, setting CHostAbstract") } - flags |= pkg.CHostAbstract - t.Log("Landlock LSM is unavailable, setting CHostAbstract") } var scrubFunc func() error // scrub after hashing |
