69 lines · 2.7 KB · TypeScript
RawDownload
import * as NodeServices from "@effect/platform-node/NodeServices";import { assert, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as FileSystem from "effect/FileSystem";import * as Layer from "effect/Layer";import * as Path from "effect/Path"; import * as DesktopConfig from "../../app/DesktopConfig.ts";import * as DesktopEnvironment from "../../app/DesktopEnvironment.ts";import * as LinuxBrowserSecret from "./LinuxBrowserSecret.ts"; it.layer(NodeServices.layer)("Linux browser secret path", (it) => {  it.effect("finds development and packaged helpers without falling back outside the install", () =>    Effect.gen(function* () {      const fileSystem = yield* FileSystem.FileSystem;      const path = yield* Path.Path;      const root = yield* fileSystem.makeTempDirectoryScoped({ prefix: "t3-browser-secret-path-" });      const resourcesPath = path.join(root, "install", "resources");      const native = path.join(        root,        "native",        "browser-secret",        "build",        "x64",        "t3-browser-secret",      );      const staged = path.join(        root,        "apps",        "desktop",        "prod-resources",        "browser-secret",        "t3-browser-secret",      );      const packaged = path.join(resourcesPath, "browser-secret", "t3-browser-secret");      for (const filename of [native, staged, packaged]) {        yield* fileSystem.makeDirectory(path.dirname(filename), { recursive: true });        yield* fileSystem.writeFileString(filename, "helper");      }      const resolve = (isPackaged: boolean, platform: NodeJS.Platform = "linux") => {        const environment = DesktopEnvironment.layer({          dirname: path.join(root, "apps", "desktop", "dist-electron"),          homeDirectory: root,          platform,          processArch: "x64",          appVersion: "0.0.1",          appPath: path.join(resourcesPath, "app.asar"),          isPackaged,          resourcesPath,          runningUnderArm64Translation: false,        }).pipe(Layer.provide(DesktopConfig.layerTest({})));        return LinuxBrowserSecret.LinuxBrowserSecretPath.pipe(          Effect.provide(LinuxBrowserSecret.layer.pipe(Layer.provide(environment))),        );      };       assert.equal(yield* resolve(false), native);      assert.equal(yield* resolve(true), packaged);      yield* fileSystem.remove(native);      assert.equal(yield* resolve(false), staged);      yield* fileSystem.remove(packaged);      assert.isUndefined(yield* resolve(true));      assert.isUndefined(yield* resolve(false, "darwin"));      assert.isUndefined(yield* resolve(false, "win32"));      yield* fileSystem.remove(staged);      assert.isUndefined(yield* resolve(false));    }).pipe(Effect.scoped),  );});