chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* Import Validation Tests
|
||||
*
|
||||
* These tests validate that the SDK can be imported correctly across
|
||||
* different module systems (ESM and CJS).
|
||||
*/
|
||||
|
||||
import { execa, type Options as ExecaOptions } from "execa";
|
||||
import { dirname, resolve } from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const fixturesDir = resolve(__dirname, "../fixtures");
|
||||
|
||||
// Find the SDK package in the monorepo
|
||||
const _sdkDir = resolve(__dirname, "../../../../packages/trigger-sdk");
|
||||
|
||||
// Common execa options
|
||||
const execaOpts: ExecaOptions = {
|
||||
env: {
|
||||
...process.env,
|
||||
// Ensure Node.js can resolve workspace packages
|
||||
NODE_PATH: resolve(__dirname, "../../../../node_modules"),
|
||||
},
|
||||
timeout: 30_000,
|
||||
};
|
||||
|
||||
describe("ESM Import Tests", () => {
|
||||
it("should import SDK using ESM syntax", async () => {
|
||||
const result = await execa("node", ["test.mjs"], {
|
||||
...execaOpts,
|
||||
cwd: resolve(fixturesDir, "esm-import"),
|
||||
});
|
||||
|
||||
expect(result.stdout).toContain("SUCCESS");
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
|
||||
it("should validate superjson serialization in ESM", async () => {
|
||||
const result = await execa("node", ["superjson-test.mjs"], {
|
||||
...execaOpts,
|
||||
cwd: resolve(fixturesDir, "esm-import"),
|
||||
});
|
||||
|
||||
expect(result.stdout).toContain("SUCCESS");
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe("CJS Require Tests", () => {
|
||||
it("should require SDK using CommonJS syntax", async () => {
|
||||
const result = await execa("node", ["test.cjs"], {
|
||||
...execaOpts,
|
||||
cwd: resolve(fixturesDir, "cjs-require"),
|
||||
});
|
||||
|
||||
expect(result.stdout).toContain("SUCCESS");
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
|
||||
it("should work with --experimental-require-module flag on older Node", async () => {
|
||||
// This flag is needed for Node < 22.12.0 to require ESM modules
|
||||
// On newer Node.js, it's a no-op
|
||||
const result = await execa("node", ["--experimental-require-module", "test.cjs"], {
|
||||
...execaOpts,
|
||||
cwd: resolve(fixturesDir, "cjs-require"),
|
||||
});
|
||||
|
||||
expect(result.stdout).toContain("SUCCESS");
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe("TypeScript Compilation Tests", () => {
|
||||
it("should typecheck SDK imports successfully", async () => {
|
||||
const result = await execa("npx", ["tsc", "--noEmit"], {
|
||||
...execaOpts,
|
||||
cwd: resolve(fixturesDir, "typescript"),
|
||||
});
|
||||
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user