Shaman: fail unit test when running as root user (linux) #104234
@ -6,6 +6,7 @@ import (
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
@ -189,6 +190,16 @@ func TestCheckSharedStoragePath(t *testing.T) {
|
||||
// that seems consistent.
|
||||
// FIXME: find another way to test with unwritable directories on Windows.
|
||||
if runtime.GOOS != "windows" {
|
||||
|
||||
// Root can always create directories, so this test would fail with a
|
||||
// confusing message. Instead it's better to refuse running as root at all.
|
||||
currentUser, err := user.Current()
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotEqual(t, "0", currentUser.Uid,
|
||||
"this test requires running as normal user, not %s (%s)", currentUser.Username, currentUser.Uid)
|
||||
require.NotEqual(t, "root", currentUser.Username,
|
||||
"this test requires running as normal user, not %s (%s)", currentUser.Username, currentUser.Uid)
|
||||
|
||||
parentPath := filepath.Join(mf.tempdir, "deep")
|
||||
testPath := filepath.Join(parentPath, "nesting")
|
||||
if err := os.Mkdir(parentPath, fs.ModePerm); !assert.NoError(t, err) {
|
||||
@ -203,6 +214,7 @@ func TestCheckSharedStoragePath(t *testing.T) {
|
||||
assert.Equal(t, testPath, result.Path)
|
||||
assert.False(t, result.IsUsable)
|
||||
assert.Contains(t, result.Cause, "Unable to create a file")
|
||||
|
||||
Sybren A. Stüvel
commented
Please keep unrelated formatting changes out of a PR. I'll remove this before landing; this is just a request for other/future PRs. Please keep unrelated formatting changes out of a PR. I'll remove this before landing; this is just a request for other/future PRs.
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
I feel there's too much nesting going on here. Also
t.FailNow()
wouldn't show the actual content oferr
. Finally, the original code was written before I realised I could dorequire.NoError(...)
instead ofassert.NoError(...)
and it would immediately stop the test.This would be better: