80 lines
2.7 KiB
JavaScript
80 lines
2.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import path from "node:path";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
deriveAutoDevProfileName,
|
|
resolveAppIdentifier,
|
|
resolveUserDataPath,
|
|
} from "./dev-profile.mjs";
|
|
|
|
const PROD_APP_IDENTIFIER = "com.differentai.openwork";
|
|
const DEV_APP_IDENTIFIER = "com.differentai.openwork.dev";
|
|
const APP_DATA_PATH = path.join("tmp", "appData");
|
|
|
|
function resolveProfile({
|
|
appIdentifierOverride = "",
|
|
appRootPath = path.join("tmp", "openwork"),
|
|
devProfile = "",
|
|
isDevMode = true,
|
|
isPackaged = false,
|
|
userDataOverride = "",
|
|
} = {}) {
|
|
const baseAppIdentifier = isDevMode ? DEV_APP_IDENTIFIER : PROD_APP_IDENTIFIER;
|
|
const appIdentifier = resolveAppIdentifier({
|
|
appIdentifierOverride,
|
|
appRootPath,
|
|
baseAppIdentifier,
|
|
devAppIdentifier: DEV_APP_IDENTIFIER,
|
|
devProfile,
|
|
isDevMode,
|
|
isPackaged,
|
|
});
|
|
return {
|
|
appIdentifier,
|
|
userDataPath: resolveUserDataPath({
|
|
appDataPath: APP_DATA_PATH,
|
|
appIdentifier,
|
|
userDataOverride,
|
|
}),
|
|
};
|
|
}
|
|
|
|
test("unset OPENWORK_DEV_PROFILE keeps the legacy dev identifier", () => {
|
|
const profile = resolveProfile();
|
|
|
|
assert.equal(profile.appIdentifier, DEV_APP_IDENTIFIER);
|
|
assert.equal(profile.userDataPath, path.join(APP_DATA_PATH, DEV_APP_IDENTIFIER));
|
|
});
|
|
|
|
test("auto dev profile is stable for one worktree and different for another", () => {
|
|
const firstPath = path.join("tmp", "worktrees", "openwork");
|
|
const secondPath = path.join("tmp", "other", "openwork");
|
|
const firstProfile = deriveAutoDevProfileName(firstPath);
|
|
|
|
assert.equal(deriveAutoDevProfileName(firstPath), firstProfile);
|
|
assert.notEqual(deriveAutoDevProfileName(secondPath), firstProfile);
|
|
assert.match(firstProfile, /^openwork-[a-f0-9]{10}$/);
|
|
});
|
|
|
|
test("named dev profile is sanitized into the dev app identifier", () => {
|
|
const profile = resolveProfile({ devProfile: " Feature/Profile: 01 " });
|
|
|
|
assert.equal(profile.appIdentifier, `${DEV_APP_IDENTIFIER}.feature-profile-01`);
|
|
assert.equal(profile.userDataPath, path.join(APP_DATA_PATH, `${DEV_APP_IDENTIFIER}.feature-profile-01`));
|
|
});
|
|
|
|
test("OPENWORK_ELECTRON_USERDATA beats OPENWORK_DEV_PROFILE for the profile directory", () => {
|
|
const explicitUserData = path.join("tmp", "explicit-user-data");
|
|
const profile = resolveProfile({ devProfile: "auto", userDataOverride: explicitUserData });
|
|
|
|
assert.equal(profile.userDataPath, explicitUserData);
|
|
});
|
|
|
|
test("packaged mode ignores OPENWORK_DEV_PROFILE", () => {
|
|
const profile = resolveProfile({ devProfile: "auto", isPackaged: true });
|
|
|
|
assert.equal(profile.appIdentifier, DEV_APP_IDENTIFIER);
|
|
assert.equal(profile.userDataPath, path.join(APP_DATA_PATH, DEV_APP_IDENTIFIER));
|
|
});
|