mcp-server-prometheus
by loglmhq
- tests
- manual
import { exec, execSync } from "child_process";
import { promisify } from "util";
const execAsync = promisify(exec);
function test_callback() {
exec("fish", (error, stdout, stderr) => {
console.log("stdout", stdout);
console.log("stderr", stderr);
});
}
async function main() {
//const { stdout, stderr } = await execAsync('fish -c "echo hello"'); // works
const { stdout, stderr } = await execAsync("fish --no-config --no-execute"); // fails, smth to do with interactive vs not?
//const { stdout, stderr } = await execAsync("cat"); // fails, smth to do with interactive vs not?
console.log("stdout", stdout);
console.log("stderr", stderr);
}
//test_callback();
//main();
//
import { execFileWithInput } from "../build/exec-utils.js";
async function test_workaround() {
const { stdout, stderr } = await execFileWithInput(
// TODO add integration tests for these scenarios, I need to verify them as I make more changes
//"fish",
"fish -i",
// TODO "bash" test case too
"echo hello",
{}
);
console.log("stdout", stdout);
console.log("stderr", stderr);
}
test_workaround();
// WEIRD FISH SHELL FAILURE, look into later, actually referenced in fish source code:
// re: "Unable to read input file: Is a directory"
// has smth to do with stdin for script
// what is strange is if I do `fish -c "echo foobar"` that works fine via exec but I cannot exec/execFile and pass string to stdin and have it work with just fish shell
// appears to be open bug in fish shell:
// https://github.com/fish-shell/fish-shell/blob/master/src/reader.rs#L678-L681
// // XXX: This can be triggered spuriously, so we'll not do that for stdin.
// // This can be seen e.g. with node's "spawn" api.
async function main_execSyncTest() {
const { stdout, stderr } = execSync("fish --no-config -i ", {
encoding: "utf8",
input: "echo hello",
});
console.log("stdout", stdout);
console.log("stderr", stderr);
}
//main_execSyncTest();