Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Consolidate duplicate code to start global HTTP API server
Thomas Scholtes committed 2 years ago
commit 3717a18fc8857c81b24c3be9793e3138951b4a80
parent 8decb6899a7599b0b3d9fd9431ed70bcb6e8cb29
2 files changed +33 -36
modified tests/support/fixtures.ts
@@ -1,11 +1,9 @@
/* eslint-disable @typescript-eslint/naming-convention */
import type * as Stream from "node:stream";
-
import type { PeerManager, RadiclePeer } from "./peerManager.js";
-

import * as Fs from "node:fs/promises";
-
import * as FsSync from "node:fs";
import * as Path from "node:path";
import { test as base, expect, type ViewportSize } from "@playwright/test";
+
import { object, string, ZodSchema } from "zod";

import * as Process from "./process.js";
import * as issue from "@tests/support/cobs/issue.js";
@@ -14,7 +12,7 @@ import * as patch from "@tests/support/cobs/patch.js";
import { createOptions, supportDir, tmpDir } from "@tests/support/support.js";
import { createPeerManager } from "@tests/support/peerManager.js";
import { createProject } from "@tests/support/project.js";
-
import { object, string, ZodSchema } from "zod";
+
import type { PeerManager, RadiclePeer } from "./peerManager.js";

export { expect };

@@ -276,15 +274,6 @@ export function appConfigWithFixture(defaultLocalHttpdPort = 8081) {
  };
}

-
export async function startPalmHttpd(httpdPort: number) {
-
  const peerManager = await createPeerManager({
-
    dataDir: Path.resolve(Path.join(tmpDir, "peers")),
-
    outputLog: FsSync.createWriteStream(Path.resolve(Path.join(tmpDir, "log"))),
-
  });
-
  const palm = await peerManager.startPeer({ name: "palm" });
-
  await palm.startHttpd(httpdPort);
-
}
-

export async function createSourceBrowsingFixture(
  peerManager: PeerManager,
  palm: RadiclePeer,
modified tests/support/globalSetup.ts
@@ -1,4 +1,4 @@
-
import * as FsSync from "node:fs";
+
import * as Fs from "node:fs";
import * as Path from "node:path";
import {
  assertRadInstalled,
@@ -11,7 +11,6 @@ import {
  createSourceBrowsingFixture,
  defaultHttpdPort,
  gitOptions,
-
  startPalmHttpd,
} from "@tests/support/fixtures.js";
import { createPeerManager } from "@tests/support/peerManager.js";
import { killAllProcesses } from "@tests/support/process.js";
@@ -29,33 +28,42 @@ export default async function globalSetup(): Promise<() => void> {
  }

  if (!process.env.SKIP_FIXTURE_CREATION) {
-
    console.log("Setting up global test environment");
+
    console.log(
+
      "Recreating static fixtures. Set SKIP_FIXTURE_CREATION to skip this",
+
    );
    await removeWorkspace();
+
  }
+

+
  const peerManager = await createPeerManager({
+
    dataDir: Path.resolve(tmpDir, "peers"),
+
    outputLog: Fs.createWriteStream(
+
      Path.resolve(tmpDir, "globalPeerManager.log"),
+
    )
+
      // Workaround for fixing MaxListenersExceededWarning.
+
      // Since every prefixOutput stream adds stream listeners that don't autoClose.
+
      // TODO: We still seem to have some descriptors left open when running vitest, which we should handle.
+
      .setMaxListeners(16),
+
  });
+

+
  const palm = await peerManager.startPeer({
+
    name: "palm",
+
    gitOptions: gitOptions["alice"],
+
  });

-
    // Workaround for fixing MaxListenersExceededWarning.
-
    // Since every prefixOutput stream adds stream listeners that don't autoClose.
-
    // TODO: We still seem to have some descriptors left open when running vitest, which we should handle.
-
    const peerManager = await createPeerManager({
-
      dataDir: Path.resolve(Path.join(tmpDir, "peers")),
-
      outputLog: FsSync.createWriteStream(
-
        Path.join(tmpDir, "globalSetup.log"),
-
      ).setMaxListeners(16),
-
    });
+
  await palm.startHttpd(defaultHttpdPort);

-
    const palm = await peerManager.startPeer({
-
      name: "palm",
-
      gitOptions: gitOptions["alice"],
-
    });
+
  if (!process.env.SKIP_FIXTURE_CREATION) {
    await palm.startHttpd(defaultHttpdPort);
    await palm.startNode({ policy: "track", scope: "all", alias: "palm" });

    try {
-
      await createSourceBrowsingFixture(peerManager, palm);
      console.log("Creating source-browsing fixture");
-
      await createMarkdownFixture(palm);
+
      await createSourceBrowsingFixture(peerManager, palm);
      console.log("Creating markdown fixture");
-
      await createCobsFixture(palm);
+
      await createMarkdownFixture(palm);
      console.log("Creating cobs fixture");
+
      await createCobsFixture(palm);
+
      console.log("All fixtures created");
    } catch (error) {
      console.log("");
      console.log("Not able to create the required fixtures.");
@@ -65,11 +73,11 @@ export default async function globalSetup(): Promise<() => void> {
      console.log("");
      process.exit(1);
    }
-
    console.log("Running tests");
    await palm.stopNode();
-
  } else {
-
    await startPalmHttpd(defaultHttpdPort);
  }

-
  return () => killAllProcesses();
+
  return async () => {
+
    await palm.stopNode();
+
    killAllProcesses();
+
  };
}