import { file, spawn, spawnSync } from "bun"; import { afterEach, beforeEach, expect, it, describe } from "bun:test"; import { bunEnv, bunExe, bunEnv as env } from "harness"; import { mkdtemp, realpath, rm, writeFile } from "fs/promises"; import { tmpdir } from "os"; import { join } from "path"; import { readdirSorted } from "./dummy.registry"; let run_dir: string; beforeEach(async () => { run_dir = await realpath( await mkdtemp(join(tmpdir(), "bun-run.test." + Math.trunc(Math.random() * 9999999).toString(32))), ); }); afterEach(async () => { await rm(run_dir, { force: true, recursive: true }); }); for (let withRun of [false, true]) { describe(withRun ? "bun run" : "bun", () => { describe("should work with .", () => { it("respecting 'main' field", async () => { await writeFile(join(run_dir, "test.js"), "console.log('Hello, world!');"); await writeFile( join(run_dir, "package.json"), JSON.stringify({ name: "test", version: "0.0.0", main: "test.js", }), ); const { stdout, stderr, exitCode } = spawnSync({ cmd: [bunExe(), withRun ? "run" : "", "."].filter(Boolean), cwd: run_dir, env: bunEnv, }); expect(stderr.toString()).toBe(""); expect(stdout.toString()).toBe("Hello, world!\n"); expect(exitCode).toBe(0); }); it("falling back to index", async () => { await writeFile(join(run_dir, "index.ts"), "console.log('Hello, world!');"); await writeFile( join(run_dir, "package.json"), JSON.stringify({ name: "test", version: "0.0.0", }), ); const { stdout, stderr, exitCode } = spawnSync({ cmd: [bunExe(), withRun ? "run" : "", "."].filter(Boolean), cwd: run_dir, env: bunEnv, }); expect(stderr.toString()).toBe(""); expect(stdout.toString()).toBe("Hello, world!\n"); expect(exitCode).toBe(0); }); it("falling back to index with no package.json", async () => { await writeFile(join(run_dir, "index.ts"), "console.log('Hello, world!');"); const { stdout, stderr, exitCode } = spawnSync({ cmd: [bunExe(), withRun ? "run" : "", "."].filter(Boolean), cwd: run_dir, env: bunEnv, }); expect(stderr.toString()).toBe(""); expect(stdout.toString()).toBe("Hello, world!\n"); expect(exitCode).toBe(0); }); }); }); } it("should download dependency to run local file", async () => { await writeFile( join(run_dir, "test.js"), ` const { minify } = require("uglify-js@3.17.4"); console.log(minify("print(6 * 7)").code); `, ); const { stdout: stdout1, stderr: stderr1, exited: exited1, } = spawn({ cmd: [bunExe(), "run", "test.js"], cwd: run_dir, stdout: null, stdin: "pipe", stderr: "pipe", env: { ...env, BUN_INSTALL_CACHE_DIR: join(run_dir, ".cache"), }, }); expect(stderr1).toBeDefined(); const err1 = await new Response(stderr1).text(); expect(err1).toBe(""); expect(await readdirSorted(run_dir)).toEqual([".cache", "test.js"]); expect(await readdirSorted(join(run_dir, ".cache"))).toContain("uglify-js"); expect(await readdirSorted(join(run_dir, ".cache", "uglify-js"))).toEqual(["3.17.4"]); expect(stdout1).toBeDefined(); const out1 = await new Response(stdout1).text(); expect(out1.split(/\r?\n/)).toEqual(["print(42);", ""]); expect(await exited1).toBe(0); // Perform `bun test.js` with cached dependencies const { stdout: stdout2, stderr: stderr2, exited: exited2, } = spawn({ cmd: [bunExe(), "test.js"], cwd: run_dir, stdout: null, stdin: "pipe", stderr: "pipe", env: { ...env, BUN_INSTALL_CACHE_DIR: join(run_dir, ".cache"), }, }); expect(stderr2).toBeDefined(); const err2 = await new Response(stderr2).text(); expect(err2).toBe(""); expect(await readdirSorted(run_dir)).toEqual([".cache", "test.js"]); expect(await readdirSorted(join(run_dir, ".cache"))).toContain("uglify-js"); expect(await readdirSorted(join(run_dir, ".cache", "uglify-js"))).toEqual(["3.17.4"]); expect(stdout2).toBeDefined(); const out2 = await new Response(stdout2).text(); expect(out2.split(/\r?\n/)).toEqual(["print(42);", ""]); expect(await exited2).toBe(0); }); it("should download dependencies to run local file", async () => { await writeFile( join(run_dir, "test.js"), ` import { file } from "bun"; import decompress from "decompress@4.2.1"; const buffer = await file("${join(import.meta.dir, "baz-0.0.3.tgz")}").arrayBuffer(); for (const entry of await decompress(Buffer.from(buffer))) { console.log(\`\${entry.type}: \${entry.path}\`); } `, ); const { stdout: stdout1, stderr: stderr1, exited: exited1, } = spawn({ cmd: [bunExe(), "test.js"], cwd: run_dir, stdout: null, stdin: "pipe", stderr: "pipe", env: { ...env, BUN_INSTALL_CACHE_DIR: join(run_dir, ".cache"), }, }); expect(stderr1).toBeDefined(); const err1 = await new Response(stderr1).text(); expect(err1).toBe(""); expect(await readdirSorted(run_dir)).toEqual([".cache", "test.js"]); expect(await readdirSorted(join(run_dir, ".cache"))).toContain("decompress"); expect(await readdirSorted(join(run_dir, ".cache", "decompress"))).toEqual(["4.2.1"]); expect(await readdirSorted(join(run_dir, ".cache", "decompress", "4.2.1"))).toEqual([ "index.js", "license", "package.json", "readme.md", ]); expect(await file(join(run_dir, ".cache", "decompress", "4.2.1", "index.js")).text()).toContain( "\nmodule.exports = ", ); expect(stdout1).toBeDefined(); const out1 = await new Response(stdout1).text(); expect(out1.split(/\r?\n/)).toEqual([ "directory: package/", "file: package/index.js", "file: package/package.json", "", ]); expect(await exited1).toBe(0); // Perform `bun run test.js` with cached dependencies const { stdout: stdout2, stderr: stderr2, exited: exited2, } = spawn({ cmd: [bunExe(), "run", "test.js"], cwd: run_dir, stdout: null, stdin: "pipe", stderr: "pipe", env: { ...env, BUN_INSTALL_CACHE_DIR: join(run_dir, ".cache"), }, }); expect(stderr2).toBeDefined(); const err2 = await new Response(stderr2).text(); expect(err2).toBe(""); expect(await readdirSorted(run_dir)).toEqual([".cache", "test.js"]); expect(await readdirSorted(join(run_dir, ".cache"))).toContain("decompress"); expect(await readdirSorted(join(run_dir, ".cache", "decompress"))).toEqual(["4.2.1"]); expect(await readdirSorted(join(run_dir, ".cache", "decompress", "4.2.1"))).toEqual([ "index.js", "license", "package.json", "readme.md", ]); expect(await file(join(run_dir, ".cache", "decompress", "4.2.1", "index.js")).text()).toContain( "\nmodule.exports = ", ); expect(stdout2).toBeDefined(); const out2 = await new Response(stdout2).text(); expect(out2.split(/\r?\n/)).toEqual([ "directory: package/", "file: package/index.js", "file: package/package.json", "", ]); expect(await exited2).toBe(0); }); xpose-action-api-context'>feat/expose-action-api-context Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/packages/astro/test/fixtures/config-path/config (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2022-05-12Serialize route generation (#3354)Gravatar Juan Martín Seery 5-59/+61
2022-05-12Corrected the default value of trailingSlash (#3353)Gravatar Rafid Muhymin Wafi 1-1/+1
2022-05-12[ci] formatGravatar matthewp 1-85/+78
2022-05-12Fixed search bar of the docs example not working (#3247)Gravatar Rafid Muhymin Wafi 1-76/+94
* fixed search bar not working * fixed search bar not working during build * fix search bar throwing error on production site
2022-05-12Add config option customPages (#3315)Gravatar Eloi-Perez 1-0/+14
* Add config option customPages Add config option customPages to be able to add custom URL pages to the sitemap.xml * add comment to document customPages option
2022-05-12fix: vite types (#3352)Gravatar Juan Martín Seery 4-5/+16
* Re-export vite types and added them to zod schema * Removed casted typed * Changeset
2022-05-12[ci] update lockfile (#3287)Gravatar Fred K. Schott 33-1038/+1096
* [ci] update lockfile * chore: fix lockfile * fix: pin turbo Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com> Co-authored-by: Nate Moore <nate@skypack.dev>
2022-05-12[ci] formatGravatar matthewp 2-2/+2
2022-05-12add error hints (#3350)Gravatar Fred K. Schott 3-0/+19
* add error hints * chore: add changeset Co-authored-by: Nate Moore <nate@skypack.dev>
2022-05-12[ci] formatGravatar matthewp 2-10/+6
2022-05-12Fix: React - Use "createRoot" instead of "hydrateRoot" for `client:only` (#3337)Gravatar Ben Holmes 4-22/+34
* feat: pass "client" directive to clientEntrypoints * refactor: remove hydration warning suppression react 17 * feat: remove hydration warning suppression react 18 * chore: changeset * fix: change metadata to options bag
2022-05-12[ci] formatGravatar matthewp 1-2/+8
2022-05-12Resolve components by module ID during compilation (#3300)Gravatar Tony Sullivan 22-41/+407
* WIP: adding test coverage * test fixes * moving the shared lib up a directory to reproduce the bug * fix: transform with the module ID instead of parsing the filepath * adding the shared lib to the workspaces list * fix: client-only assets now get the full URL from vite * why is this needed for windows? * WIP: using /@fs to handle windows filepaths * fix: remove /@fs from hoisted script imports * nit: removing unused imports * fix: strip off the path root when mapping client:only styles * had to reverse the `/@fs` handling to work on windows and unix * chore: adding comments to explain the fix * chore: adding changeset
2022-05-12[ci] collect statsGravatar FredKSchott 1-0/+1
2022-05-11Exclude `node-fetch` from vite.optimizeDeps (#3348)Gravatar Nate Moore 2-0/+6
* fix: exclude `node-fetch` from vite.optimizeDeps * chore: format
2022-05-11fix: updated blog template with existing address (#3312)Gravatar Gautier Ben Aïm 1-2/+2
2022-05-11refactor(vercel): Build Output API v3 (#3216)Gravatar Juan Martín Seery 42-231/+659
* Removed ignores * Migration to v3 * More changes * Remove legacy redirects * Fail when there is no ENABLE_VC_BUILD * Fix edge * Updated readme * Changeset * Added static mode * Updated documentation * Updated shim * Made edge work! * Updated changeset * Ensure empty dir * Fixed redirects for dynamic paths * Removed extra declaration * Splited imports * Updated readme * Fixed some urls * Deprecated shim! * [test]: Vercel NFT * Beautify * Edge bundle to node 14.19 Vercel runs 14.19.1 (I've checked it manually) * Re-added shim (#3304) * Added `node:` prefix * Use the same bundling as Deno for Edge * Remove esbuild * Fixed shim * Moved nft * Updated changeset * Added note about Edge * fix typo * Added support for Node 16 (vercel/vercel#7772)
2022-05-11Fix APIRoute type (#3344)Gravatar Matthew Phillips 3-11/+8
* Fix APIRoute type * Adds a changeset * Update usage of the two API route signatures
2022-05-11[create-astro] Finalize developer experience... with gradients 🚀 (#3313)Gravatar Ben Holmes 5-23/+123
* wip: port gradient helpers from sandbox ideas * feat: wire up rocket gradient 🚀 * feat: wire up rocket gradient on install step * refactor: update "next steps" wording * deps: add chalk (for rendering gradient) * chore: changeset * chore: clean up sstray template string