aboutsummaryrefslogtreecommitdiff
path: root/integration/macro
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-01-05 04:54:37 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-01-05 13:12:11 -0800
commit1004e924ff2d53b14cb2e3a5c32ed0e4135fd89a (patch)
tree373067cb2af44668c7df2de936c066f6b94ca0b2 /integration/macro
parentc013ede2270d6a07c2f895ac57e0f657b904feb2 (diff)
downloadbun-1004e924ff2d53b14cb2e3a5c32ed0e4135fd89a.tar.gz
bun-1004e924ff2d53b14cb2e3a5c32ed0e4135fd89a.tar.zst
bun-1004e924ff2d53b14cb2e3a5c32ed0e4135fd89a.zip
minimal integration tests for macros
Diffstat (limited to '')
-rw-r--r--integration/macro/assert.tsx4
-rw-r--r--integration/macro/fetchSync.tsx8
-rw-r--r--integration/macro/hello-fetch-macro.tsx5
-rw-r--r--integration/macro/loadMocks.tsx30
4 files changed, 47 insertions, 0 deletions
diff --git a/integration/macro/assert.tsx b/integration/macro/assert.tsx
new file mode 100644
index 000000000..8a6e4d822
--- /dev/null
+++ b/integration/macro/assert.tsx
@@ -0,0 +1,4 @@
+// This logs the result at build time
+export function unreachable(call) {
+ throw new Error(call.arguments[0].toString() || "unreachable");
+}
diff --git a/integration/macro/fetchSync.tsx b/integration/macro/fetchSync.tsx
new file mode 100644
index 000000000..ebe1566e6
--- /dev/null
+++ b/integration/macro/fetchSync.tsx
@@ -0,0 +1,8 @@
+export async function fetchSync(ctx) {
+ const str = ctx.arguments[0].toString();
+
+ const response = await fetch(str);
+ const text = await response.text();
+
+ return <string value={text} />;
+}
diff --git a/integration/macro/hello-fetch-macro.tsx b/integration/macro/hello-fetch-macro.tsx
new file mode 100644
index 000000000..fa0de4a9d
--- /dev/null
+++ b/integration/macro/hello-fetch-macro.tsx
@@ -0,0 +1,5 @@
+import { fetchSync } from "macro:./fetchSync.tsx";
+
+const synchronousFetch = fetchSync(`https://example.com`);
+
+console.log(synchronousFetch);
diff --git a/integration/macro/loadMocks.tsx b/integration/macro/loadMocks.tsx
new file mode 100644
index 000000000..4b7993c6d
--- /dev/null
+++ b/integration/macro/loadMocks.tsx
@@ -0,0 +1,30 @@
+import { unreachable } from "macro:./assert";
+
+if (process.env.NODE_ENV !== "test")
+ unreachable("This module should only be imported in tests");
+
+export const mockData = {
+ Copilot: {
+ id: "Copilot",
+ name: "Copilot",
+ description: "Copilot",
+ icon: "https://s3.amazonaws.com/copilot-public/images/icons/Copilot.png",
+ color: "#00AEEF",
+ type: "service",
+ tags: ["copilot"],
+ categories: ["copilot"],
+ links: [
+ {
+ id: "Copilot",
+ name: "Copilot",
+ url: "https://copilot.io",
+ description: "Copilot",
+ icon: "https://s3.amazonaws.com/copilot-public/images/icons/Copilot.png",
+ color: "#00AEEF",
+ type: "service",
+ tags: ["copilot"],
+ categories: ["copilot"],
+ },
+ ],
+ },
+};