Allow passing a env when running processes.

This brings the libeufin-basic test to pass.
This commit is contained in:
MS 2021-02-01 13:13:43 +01:00
parent ca2943b270
commit c3ca3aa7fc
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
2 changed files with 25 additions and 8 deletions

View File

@ -112,6 +112,21 @@ interface WaitResult {
signal: NodeJS.Signals | null;
}
/**
* Returns a new object being the current environment
* plus the values given in the parameter.
*/
export function extendEnv(extension: {[index: string]: string}): {[index: string]: string | undefined} {
let ret: {[index: string]: string | undefined} = {};
for (let v in process.env) {
ret[v] = process.env[v];
}
for (let v in extension) {
ret[v] = extension[v];
}
return ret;
}
/**
* Run a shell command, return stdout.
*/
@ -175,6 +190,7 @@ export async function runCommand(
logName: string,
command: string,
args: string[],
env: {[index: string]: string | undefined} = process.env
): Promise<string> {
console.log("runing command", shellescape([command, ...args]));
return new Promise((resolve, reject) => {
@ -182,6 +198,7 @@ export async function runCommand(
const proc = spawn(command, args, {
stdio: ["inherit", "pipe", "pipe"],
shell: false,
env: env
});
proc.stdout.on("data", (x) => {
if (x instanceof Buffer) {
@ -323,12 +340,14 @@ export class GlobalTestState {
command: string,
args: string[],
logName: string,
env: {[index: string] : string | undefined} = process.env
): ProcessWrapper {
console.log(
`spawning process (${logName}): ${shellescape([command, ...args])}`,
);
const proc = spawn(command, args, {
stdio: ["inherit", "pipe", "pipe"],
env: env
});
console.log(`spawned process (${logName}) with pid ${proc.pid}`);
proc.on("error", (err) => {

View File

@ -24,6 +24,7 @@ import {
pingProc,
ProcessWrapper,
runCommand,
extendEnv
} from "./harness";
export interface LibeufinSandboxServiceInterface {
@ -72,11 +73,10 @@ export class LibeufinSandboxService implements LibeufinSandboxServiceInterface {
[
"serve",
"--port",
`${this.sandboxConfig.httpPort}`,
"--db-conn-string",
this.sandboxConfig.databaseJdbcUri,
`${this.sandboxConfig.httpPort}`
],
"libeufin-sandbox",
extendEnv({LIBEUFIN_SANDBOX_DB_CONNECTION: this.sandboxConfig.databaseJdbcUri})
);
}
@ -114,10 +114,9 @@ export class LibeufinNexusService {
"superuser",
"admin",
"--password",
"test",
"--db-conn-string",
this.nexusConfig.databaseJdbcUri,
"test"
],
extendEnv({LIBEUFIN_NEXUS_DB_CONNECTION: this.nexusConfig.databaseJdbcUri})
);
this.nexusProc = this.globalTestState.spawnService(
@ -126,10 +125,9 @@ export class LibeufinNexusService {
"serve",
"--port",
`${this.nexusConfig.httpPort}`,
"--db-conn-string",
this.nexusConfig.databaseJdbcUri,
],
"libeufin-nexus",
extendEnv({LIBEUFIN_NEXUS_DB_CONNECTION: this.nexusConfig.databaseJdbcUri})
);
}