Merge pull request #1072 from fabro-sh/codex/bun-security-update
Some checks failed
Rust / Format (push) Waiting to run
Rust / Clippy (push) Waiting to run
Rust / Rustdoc (push) Waiting to run
Rust / Generated Docs (push) Waiting to run
Rust / Test (Linux) (push) Waiting to run
Rust / Sandbox providers (Docker) (push) Waiting to run
Rust / Test (macOS) (push) Waiting to run
Rust / Process titles (musl) (push) Waiting to run
TypeScript / Typecheck (push) Has been cancelled
TypeScript / Test (push) Has been cancelled
TypeScript / Build (push) Has been cancelled

security: update Bun to 1.4.4 for compromised CA distrust
This commit is contained in:
Scott Werner 2026-10-23 20:27:09 -04:00 • committed by GitHub
commit 586fafa9f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 32 additions and 22 deletions

View file

@ -55,7 +55,7 @@ RUN cargo install cargo-nextest --locked
ENV CARGO_INCREMENTAL=0
# Bun
RUN curl -fsSL https://bun.sh/install | bash
RUN curl -fsSL https://bun.sh/install | bash -s -- bun-v1.4.4
ENV PATH="/root/.bun/bin:${PATH}"
WORKDIR /root

View file

@ -40,7 +40,7 @@ RUN cargo install cargo-nextest --locked
ENV CARGO_INCREMENTAL=0
# Bun
RUN curl -fsSL https://bun.sh/install | bash
RUN curl -fsSL https://bun.sh/install | bash -s -- bun-v1.4.4
ENV PATH="/root/.bun/bin:${PATH}"
WORKDIR /root

View file

@ -45,7 +45,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
if: steps.skip.outputs.skip != 'true'
with:
bun-version: 1.3.14
bun-version: 1.4.4
no-cache: true
- name: Install bun deps (for SPA verify)

View file

@ -49,7 +49,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.14
bun-version: 1.4.4
no-cache: true
- name: Install bun deps

View file

@ -45,7 +45,7 @@ jobs:
persist-credentials: false
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.14
bun-version: 1.4.4
- run: bun install --frozen-lockfile
- run: cd apps/fabro-web && bun run typecheck
- run: cd lib/packages/fabro-api-client && bun run typecheck
@ -61,7 +61,7 @@ jobs:
persist-credentials: false
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.14
bun-version: 1.4.4
- run: bun install --frozen-lockfile
- run: cd apps/fabro-web && bun run test
@ -76,7 +76,7 @@ jobs:
persist-credentials: false
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.14
bun-version: 1.4.4
- run: bun install --frozen-lockfile
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:

View file

@ -1,8 +1,9 @@
import { afterEach, describe, expect, mock, test } from "bun:test";
import type { AxiosAdapter } from "axios";
import { StrictMode } from "react";
import { StrictMode, type ReactNode } from "react";
import { MemoryRouter, Route, Routes } from "react-router";
import TestRenderer, { act } from "react-test-renderer";
import { SWRConfig } from "swr";
import InstallApp from "./install-app";
import { generatedAxios } from "./lib/api-client";
@ -25,6 +26,15 @@ const SESSION_RESPONSE = {
const originalAdapter = generatedAxios.defaults.adapter;
function createInstallRenderer(children: ReactNode) {
// Each test gets its own session cache and in-flight request registry.
return TestRenderer.create(
<SWRConfig value={{ provider: () => new Map() }}>
{children}
</SWRConfig>,
);
}
type TestWindow = {
history: {
state: unknown;
@ -209,7 +219,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<StrictMode>
<MemoryRouter initialEntries={["/install/github?error=github-app-manifest-conversion-failed"]}>
<Routes>
@ -281,7 +291,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/github/done?token=test-install-token"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -369,7 +379,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/object-store"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -465,7 +475,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/object-store"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -540,7 +550,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/review"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -606,7 +616,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/review"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -703,7 +713,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/sandbox"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -797,7 +807,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/sandbox"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -885,7 +895,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/review"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -969,7 +979,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/llm"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -1047,7 +1057,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/llm"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -1117,7 +1127,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/review"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -1178,7 +1188,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/review"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />
@ -1247,7 +1257,7 @@ describe("InstallApp", () => {
let renderer: TestRenderer.ReactTestRenderer | null = null;
await act(async () => {
renderer = TestRenderer.create(
renderer = createInstallRenderer(
<MemoryRouter initialEntries={["/install/llm"]}>
<Routes>
<Route path="/install/*" element={<InstallApp />} />