Skip to content

Commit

Permalink
Add bundling unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
xenova committed Nov 4, 2024
1 parent f638a31 commit 36274cd
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions tests/bundles.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { spawnSync } from "child_process";

const MODULE_NAME = "@huggingface/transformers";

const CODE_BODY = `
const model_id = "hf-internal-testing/tiny-random-LlamaForCausalLM";
const generator = await pipeline("text-generation", model_id, { dtype: "fp32" });
const result = await generator("hello", { max_new_tokens: 3, return_full_text: false });
process.stdout.write(result[0].generated_text);
`;

const TARGET_OUTPUT = "erdingsAndroid Load";

const wrap_async_iife = (code) => `(async function() { ${code} })();`;

const check = (code, module = false) => {
const args = ["-e", code];
if (module) args.push("--input-type=module");
const { status, stdout, stderr } = spawnSync("node", args);
expect(stderr.toString()).toBe(""); // No warnings or errors are printed
expect(stdout.toString()).toBe(TARGET_OUTPUT); // The output should match
expect(status).toBe(0); // The process should exit cleanly
};

describe("Testing the bundle", () => {
it("ECMAScript Module (ESM)", () => {
check(`import { pipeline } from "${MODULE_NAME}";${CODE_BODY}`, true);
});

it("CommonJS (CJS) with require", () => {
check(`const { pipeline } = require("${MODULE_NAME}");${wrap_async_iife(CODE_BODY)}`);
});

it("CommonJS (CJS) with dynamic import", () => {
check(`${wrap_async_iife(`const { pipeline } = await import("${MODULE_NAME}");${CODE_BODY}`)}`);
});
});

0 comments on commit 36274cd

Please sign in to comment.