Load server identity from install dir, not shell CWD.
Release rolling / release (push) Successful in 9m49s

Resolve PEARDOCK_HOME / binary path /opt/peardock for .env so manual
sudo -u peardock runs no longer hit EACCES on a relative home-dir .env.
This commit is contained in:
Raven Scott
2026-07-16 06:01:20 -04:00
parent fda8695fbe
commit 6d6c30f204
7 changed files with 252 additions and 9 deletions
+63
View File
@@ -0,0 +1,63 @@
import test from 'brittle'
import path from 'path'
import fs from 'fs'
import os from 'os'
import {
resolveServerDataDir,
resolveEnvFile,
ensureServerDataDir,
} from '../server/core/paths.js'
test('resolveServerDataDir respects PEARDOCK_HOME', (t) => {
const prev = process.env.PEARDOCK_HOME
process.env.PEARDOCK_HOME = '/opt/peardock'
t.is(resolveServerDataDir(), path.resolve('/opt/peardock'))
if (prev === undefined) delete process.env.PEARDOCK_HOME
else process.env.PEARDOCK_HOME = prev
})
test('resolveEnvFile joins data dir', (t) => {
const prevH = process.env.PEARDOCK_HOME
const prevE = process.env.PEARDOCK_ENV_PATH
delete process.env.PEARDOCK_ENV_PATH
process.env.PEARDOCK_HOME = '/opt/peardock'
t.is(resolveEnvFile(), path.join(path.resolve('/opt/peardock'), '.env'))
if (prevH === undefined) delete process.env.PEARDOCK_HOME
else process.env.PEARDOCK_HOME = prevH
if (prevE === undefined) delete process.env.PEARDOCK_ENV_PATH
else process.env.PEARDOCK_ENV_PATH = prevE
})
test('resolveEnvFile respects PEARDOCK_ENV_PATH', (t) => {
const prev = process.env.PEARDOCK_ENV_PATH
process.env.PEARDOCK_ENV_PATH = '/custom/identity.env'
t.is(resolveEnvFile(), path.resolve('/custom/identity.env'))
if (prev === undefined) delete process.env.PEARDOCK_ENV_PATH
else process.env.PEARDOCK_ENV_PATH = prev
})
test('ensureServerDataDir sets PEARDOCK_HOME', (t) => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'peardock-paths-'))
const prevH = process.env.PEARDOCK_HOME
const prevCwd = process.cwd()
try {
process.env.PEARDOCK_HOME = dir
const r = ensureServerDataDir()
t.is(r.dataDir, path.resolve(dir))
t.is(r.envFile, path.join(path.resolve(dir), '.env'))
t.is(process.env.PEARDOCK_HOME, path.resolve(dir))
} finally {
try {
process.chdir(prevCwd)
} catch {
// ignore
}
if (prevH === undefined) delete process.env.PEARDOCK_HOME
else process.env.PEARDOCK_HOME = prevH
try {
fs.rmSync(dir, { recursive: true, force: true })
} catch {
// ignore
}
}
})