Add PM2 deployment support
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
import { loadEnvironmentFile } from '../src/server/environment.js'
|
||||
|
||||
const testVariable = 'PRODUCT_ISSUE_ENV_FILE_TEST'
|
||||
const originalValue = process.env[testVariable]
|
||||
const temporaryDirectories: string[] = []
|
||||
|
||||
afterEach(() => {
|
||||
if (originalValue === undefined) {
|
||||
delete process.env[testVariable]
|
||||
} else {
|
||||
process.env[testVariable] = originalValue
|
||||
}
|
||||
for (const directory of temporaryDirectories.splice(0)) {
|
||||
rmSync(directory, { recursive: true, force: true })
|
||||
}
|
||||
})
|
||||
|
||||
function environmentFile(value: string): string {
|
||||
const directory = mkdtempSync(join(tmpdir(), 'product-issue-env-'))
|
||||
temporaryDirectories.push(directory)
|
||||
const filePath = join(directory, '.env')
|
||||
writeFileSync(filePath, `${testVariable}=${value}\n`, {
|
||||
encoding: 'utf8',
|
||||
mode: 0o600
|
||||
})
|
||||
return filePath
|
||||
}
|
||||
|
||||
describe('loadEnvironmentFile', () => {
|
||||
it('loads values from an explicit environment file', () => {
|
||||
delete process.env[testVariable]
|
||||
|
||||
const filePath = environmentFile('from-file')
|
||||
|
||||
expect(loadEnvironmentFile(filePath)).toBe(filePath)
|
||||
expect(process.env[testVariable]).toBe('from-file')
|
||||
})
|
||||
|
||||
it('does not override values already provided by the process', () => {
|
||||
process.env[testVariable] = 'from-process'
|
||||
|
||||
loadEnvironmentFile(environmentFile('from-file'))
|
||||
|
||||
expect(process.env[testVariable]).toBe('from-process')
|
||||
})
|
||||
|
||||
it('fails when an explicitly configured file does not exist', () => {
|
||||
const directory = mkdtempSync(join(tmpdir(), 'product-issue-env-'))
|
||||
temporaryDirectories.push(directory)
|
||||
|
||||
expect(() => loadEnvironmentFile(join(directory, '.env'))).toThrow(
|
||||
'Environment file does not exist'
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user