Files
awesome-copilot/eng/materialize-plugins.test.mjs
T
github-actions[bot] b1aaa69f0a chore: publish from main
2026-07-17 08:04:30 +00:00

49 lines
2.0 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "fs";
import os from "os";
import path from "path";
import { after, test } from "node:test";
import { materializeExtensionPlugin } from "./materialize-plugins.mjs";
const tempDirs = [];
after(() => {
for (const dir of tempDirs) {
fs.rmSync(dir, { recursive: true, force: true });
}
});
test("materializeExtensionPlugin writes extension bundles to ./extensions and rewrites manifest", () => {
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "materialize-extension-plugin-"));
tempDirs.push(tempDir);
const pluginDir = path.join(tempDir, "extension-plugin");
fs.mkdirSync(path.join(pluginDir, ".github", "plugin"), { recursive: true });
fs.mkdirSync(path.join(pluginDir, "assets"), { recursive: true });
fs.writeFileSync(path.join(pluginDir, ".github", "plugin", "plugin.json"), JSON.stringify({
name: "test-extension-plugin",
description: "test plugin",
version: "1.0.0",
logo: "assets/preview.png",
extensions: ".",
}, null, 2));
fs.writeFileSync(path.join(pluginDir, "extension.mjs"), "export default {};\n");
fs.writeFileSync(path.join(pluginDir, "README.md"), "# test\n");
fs.writeFileSync(path.join(pluginDir, "assets", "preview.png"), "fake-image-bytes");
const result = materializeExtensionPlugin(pluginDir);
assert.equal(result.skipped, false);
assert.equal(result.manifestUpdated, true);
assert.equal(result.copiedEntries, 3);
assert.equal(fs.existsSync(path.join(pluginDir, "extensions", "extension.mjs")), true);
assert.equal(fs.existsSync(path.join(pluginDir, "extensions", "assets", "preview.png")), true);
assert.equal(fs.existsSync(path.join(pluginDir, "extensions", "README.md")), true);
assert.equal(fs.existsSync(path.join(pluginDir, "extensions", ".github")), false);
const pluginManifest = JSON.parse(
fs.readFileSync(path.join(pluginDir, ".github", "plugin", "plugin.json"), "utf8")
);
assert.equal(pluginManifest.extensions, "extensions");
});