Load server identity from install dir, not shell CWD.
Release rolling / release (push) Successful in 9m49s
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:
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user