mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 18:08:27 +00:00
refactor: rename to openclaw
This commit is contained in:
@@ -9,7 +9,7 @@ import { parseSchtasksQuery, readScheduledTaskCommand, resolveTaskScriptPath } f
|
||||
describe("schtasks runtime parsing", () => {
|
||||
it("parses status and last run info", () => {
|
||||
const output = [
|
||||
"TaskName: \\Moltbot Gateway",
|
||||
"TaskName: \\OpenClaw Gateway",
|
||||
"Status: Ready",
|
||||
"Last Run Time: 1/8/2026 1:23:45 AM",
|
||||
"Last Run Result: 0x0",
|
||||
@@ -23,7 +23,7 @@ describe("schtasks runtime parsing", () => {
|
||||
|
||||
it("parses running status", () => {
|
||||
const output = [
|
||||
"TaskName: \\Moltbot Gateway",
|
||||
"TaskName: \\OpenClaw Gateway",
|
||||
"Status: Running",
|
||||
"Last Run Time: 1/8/2026 1:23:45 AM",
|
||||
"Last Run Result: 0x0",
|
||||
@@ -37,68 +37,68 @@ describe("schtasks runtime parsing", () => {
|
||||
});
|
||||
|
||||
describe("resolveTaskScriptPath", () => {
|
||||
it("uses default path when CLAWDBOT_PROFILE is default", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", CLAWDBOT_PROFILE: "default" };
|
||||
it("uses default path when OPENCLAW_PROFILE is default", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", OPENCLAW_PROFILE: "default" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("uses default path when CLAWDBOT_PROFILE is unset", () => {
|
||||
it("uses default path when OPENCLAW_PROFILE is unset", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("uses profile-specific path when CLAWDBOT_PROFILE is set to a custom value", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", CLAWDBOT_PROFILE: "jbphoenix" };
|
||||
it("uses profile-specific path when OPENCLAW_PROFILE is set to a custom value", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", OPENCLAW_PROFILE: "jbphoenix" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot-jbphoenix", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw-jbphoenix", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("prefers CLAWDBOT_STATE_DIR over profile-derived defaults", () => {
|
||||
it("prefers OPENCLAW_STATE_DIR over profile-derived defaults", () => {
|
||||
const env = {
|
||||
USERPROFILE: "C:\\Users\\test",
|
||||
CLAWDBOT_PROFILE: "rescue",
|
||||
CLAWDBOT_STATE_DIR: "C:\\State\\moltbot",
|
||||
OPENCLAW_PROFILE: "rescue",
|
||||
OPENCLAW_STATE_DIR: "C:\\State\\openclaw",
|
||||
};
|
||||
expect(resolveTaskScriptPath(env)).toBe(path.join("C:\\State\\moltbot", "gateway.cmd"));
|
||||
expect(resolveTaskScriptPath(env)).toBe(path.join("C:\\State\\openclaw", "gateway.cmd"));
|
||||
});
|
||||
|
||||
it("handles case-insensitive 'Default' profile", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", CLAWDBOT_PROFILE: "Default" };
|
||||
const env = { USERPROFILE: "C:\\Users\\test", OPENCLAW_PROFILE: "Default" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("handles case-insensitive 'DEFAULT' profile", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", CLAWDBOT_PROFILE: "DEFAULT" };
|
||||
const env = { USERPROFILE: "C:\\Users\\test", OPENCLAW_PROFILE: "DEFAULT" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("trims whitespace from CLAWDBOT_PROFILE", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", CLAWDBOT_PROFILE: " myprofile " };
|
||||
it("trims whitespace from OPENCLAW_PROFILE", () => {
|
||||
const env = { USERPROFILE: "C:\\Users\\test", OPENCLAW_PROFILE: " myprofile " };
|
||||
expect(resolveTaskScriptPath(env)).toBe(
|
||||
path.join("C:\\Users\\test", ".clawdbot-myprofile", "gateway.cmd"),
|
||||
path.join("C:\\Users\\test", ".openclaw-myprofile", "gateway.cmd"),
|
||||
);
|
||||
});
|
||||
|
||||
it("falls back to HOME when USERPROFILE is not set", () => {
|
||||
const env = { HOME: "/home/test", CLAWDBOT_PROFILE: "default" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(path.join("/home/test", ".clawdbot", "gateway.cmd"));
|
||||
const env = { HOME: "/home/test", OPENCLAW_PROFILE: "default" };
|
||||
expect(resolveTaskScriptPath(env)).toBe(path.join("/home/test", ".openclaw", "gateway.cmd"));
|
||||
});
|
||||
});
|
||||
|
||||
describe("readScheduledTaskCommand", () => {
|
||||
it("parses basic command script", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
await fs.writeFile(
|
||||
scriptPath,
|
||||
@@ -106,7 +106,7 @@ describe("readScheduledTaskCommand", () => {
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toEqual({
|
||||
programArguments: ["node", "gateway.js", "--port", "18789"],
|
||||
@@ -117,21 +117,21 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("parses script with working directory", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
await fs.writeFile(
|
||||
scriptPath,
|
||||
["@echo off", "cd /d C:\\Projects\\moltbot", "node gateway.js"].join("\r\n"),
|
||||
["@echo off", "cd /d C:\\Projects\\openclaw", "node gateway.js"].join("\r\n"),
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toEqual({
|
||||
programArguments: ["node", "gateway.js"],
|
||||
workingDirectory: "C:\\Projects\\moltbot",
|
||||
workingDirectory: "C:\\Projects\\openclaw",
|
||||
});
|
||||
} finally {
|
||||
await fs.rm(tmpDir, { recursive: true, force: true });
|
||||
@@ -139,9 +139,9 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("parses script with environment variables", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
await fs.writeFile(
|
||||
scriptPath,
|
||||
@@ -149,7 +149,7 @@ describe("readScheduledTaskCommand", () => {
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toEqual({
|
||||
programArguments: ["node", "gateway.js"],
|
||||
@@ -164,9 +164,9 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("parses script with quoted arguments containing spaces", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
// Use forward slashes which work in Windows cmd and avoid escape parsing issues
|
||||
await fs.writeFile(
|
||||
@@ -175,7 +175,7 @@ describe("readScheduledTaskCommand", () => {
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toEqual({
|
||||
programArguments: ["C:/Program Files/Node/node.exe", "gateway.js"],
|
||||
@@ -186,9 +186,9 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("returns null when script does not exist", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toBeNull();
|
||||
} finally {
|
||||
@@ -197,9 +197,9 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("returns null when script has no command", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
await fs.writeFile(
|
||||
scriptPath,
|
||||
@@ -207,7 +207,7 @@ describe("readScheduledTaskCommand", () => {
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toBeNull();
|
||||
} finally {
|
||||
@@ -216,31 +216,31 @@ describe("readScheduledTaskCommand", () => {
|
||||
});
|
||||
|
||||
it("parses full script with all components", async () => {
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-schtasks-test-"));
|
||||
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-schtasks-test-"));
|
||||
try {
|
||||
const scriptPath = path.join(tmpDir, ".clawdbot", "gateway.cmd");
|
||||
const scriptPath = path.join(tmpDir, ".openclaw", "gateway.cmd");
|
||||
await fs.mkdir(path.dirname(scriptPath), { recursive: true });
|
||||
await fs.writeFile(
|
||||
scriptPath,
|
||||
[
|
||||
"@echo off",
|
||||
"rem Moltbot Gateway",
|
||||
"cd /d C:\\Projects\\moltbot",
|
||||
"rem OpenClaw Gateway",
|
||||
"cd /d C:\\Projects\\openclaw",
|
||||
"set NODE_ENV=production",
|
||||
"set CLAWDBOT_PORT=18789",
|
||||
"set OPENCLAW_PORT=18789",
|
||||
"node gateway.js --verbose",
|
||||
].join("\r\n"),
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const env = { USERPROFILE: tmpDir, CLAWDBOT_PROFILE: "default" };
|
||||
const env = { USERPROFILE: tmpDir, OPENCLAW_PROFILE: "default" };
|
||||
const result = await readScheduledTaskCommand(env);
|
||||
expect(result).toEqual({
|
||||
programArguments: ["node", "gateway.js", "--verbose"],
|
||||
workingDirectory: "C:\\Projects\\moltbot",
|
||||
workingDirectory: "C:\\Projects\\openclaw",
|
||||
environment: {
|
||||
NODE_ENV: "production",
|
||||
CLAWDBOT_PORT: "18789",
|
||||
OPENCLAW_PORT: "18789",
|
||||
},
|
||||
});
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user