mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
- shim: make system executable resolution injectable so tests pass under umask 002; skip the root-owner test when running as root - doctor: treat resolution into either the system or per-user shim dir as intercepted, and collapse the shim-in-PATH check to a single call site - setup: make remove (both --system and per-user) best-effort with errors.Join so one failed step no longer strands the other artifact - shim: allow a group-writable install parent dir (Debian/Ubuntu ship /usr/local/bin as root:staff 2775) while still rejecting world-writable and non-root-owned parents - audit: attribute cloud events to SUDO_USER when running under sudo - docs: drop the soft-fail event-logging claim (hard-fail is retained)
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package setup
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/safedep/dry/usefulerror"
|
|
"github.com/safedep/pmg/errcodes"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRequireSystemInstallSupported(t *testing.T) {
|
|
orig := setupGeteuid
|
|
t.Cleanup(func() { setupGeteuid = orig })
|
|
|
|
setupGeteuid = func() int { return 0 }
|
|
err := requireSystemInstallSupported()
|
|
if runtime.GOOS == "linux" {
|
|
assert.NoError(t, err)
|
|
} else {
|
|
require.Error(t, err)
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
require.True(t, ok)
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
}
|
|
|
|
setupGeteuid = func() int { return 1000 }
|
|
err = requireSystemInstallSupported()
|
|
require.Error(t, err)
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
require.True(t, ok)
|
|
if runtime.GOOS == "linux" {
|
|
assert.Equal(t, errcodes.PermissionDenied, usefulErr.Code())
|
|
} else {
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
}
|
|
}
|
|
|
|
func TestInstallSystemRequiresRoot(t *testing.T) {
|
|
orig := setupGeteuid
|
|
t.Cleanup(func() { setupGeteuid = orig })
|
|
|
|
setupGeteuid = func() int { return 1000 }
|
|
|
|
err := install(true)
|
|
require.Error(t, err)
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
require.True(t, ok)
|
|
if runtime.GOOS == "linux" {
|
|
assert.Equal(t, errcodes.PermissionDenied, usefulErr.Code())
|
|
} else {
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
}
|
|
}
|