Shaman: fail unit test when running as root user (linux) #104234

Manually merged
Sybren A. Stüvel merged 2 commits from michael-2/flamenco:mgr_api_meta_test_TestCheckSharedStoragePath into main 2023-07-07 16:07:17 +02:00
Showing only changes of commit e3a6522af6 - Show all commits

View File

@ -190,26 +190,31 @@ func TestCheckSharedStoragePath(t *testing.T) {
// that seems consistent. // that seems consistent.
// FIXME: find another way to test with unwritable directories on Windows. // FIXME: find another way to test with unwritable directories on Windows.
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {
currentUser, err := user.Current()
if err != nil { // 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) {
t.FailNow() t.FailNow()
} else if currentUser.Username != "root" {
parentPath := filepath.Join(mf.tempdir, "deep")
testPath := filepath.Join(parentPath, "nesting")
if err := os.Mkdir(parentPath, fs.ModePerm); !assert.NoError(t, err) {
t.FailNow()
}
if err := os.Mkdir(testPath, fs.FileMode(0)); !assert.NoError(t, err) {
t.FailNow()
}
echoCtx := doTest(testPath)
result := api.PathCheckResult{}
getResponseJSON(t, echoCtx, http.StatusOK, &result)
assert.Equal(t, testPath, result.Path)
assert.False(t, result.IsUsable)
assert.Contains(t, result.Cause, "Unable to create a file")
} }
if err := os.Mkdir(testPath, fs.FileMode(0)); !assert.NoError(t, err) {
t.FailNow()
}
echoCtx := doTest(testPath)
result := api.PathCheckResult{}
getResponseJSON(t, echoCtx, http.StatusOK, &result)
assert.Equal(t, testPath, result.Path)
assert.False(t, result.IsUsable)
assert.Contains(t, result.Cause, "Unable to create a file")

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.
} }
} }