From 0f812d69278c7aa52b8751cce93a90504a49f1da Mon Sep 17 00:00:00 2001 From: psteinroe Date: Sat, 20 Sep 2025 08:14:39 +0200 Subject: [PATCH 1/5] fix: js bin and add tests --- .github/workflows/pull_request.yml | 20 ++++-- .../postgrestools/bin/postgrestools | 2 +- .../@postgrestools/postgrestools/package.json | 3 + .../postgrestools/test/bin.test.js | 62 +++++++++++++++++++ .../postgrestools/test/test.sql | 1 + 5 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 packages/@postgrestools/postgrestools/test/bin.test.js create mode 100644 packages/@postgrestools/postgrestools/test/test.sql diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 724745272..feda0a372 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -170,11 +170,18 @@ jobs: - name: Run tests run: cargo test --workspace - test-js-bindings: + test-js-packages: name: - Test JS Bindings + Test JS Packages # use the same image we use for compiling - runs-on: ubuntu-22.04 + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + # use the same images we use for compiling + - os: windows-2022 + - os: ubuntu-22.04 + - os: macos-14 services: postgres: image: postgres:latest @@ -201,12 +208,15 @@ jobs: uses: oven-sh/setup-bun@v2 - name: Install JS dependencies run: bun install - - name: Build TypeScript code + - name: Build backend-jsonrpc working-directory: packages/@postgrestools/backend-jsonrpc run: bun run build - - name: Run JS tests + - name: Run backend-jsonrpc test working-directory: packages/@postgrestools/backend-jsonrpc run: bun run test + - name: Run cli test + working-directory: packages/@postgrestools/postgrestools + run: bun run test codegen: name: Check Codegen diff --git a/packages/@postgrestools/postgrestools/bin/postgrestools b/packages/@postgrestools/postgrestools/bin/postgrestools index fa4c5ac27..985838c85 100755 --- a/packages/@postgrestools/postgrestools/bin/postgrestools +++ b/packages/@postgrestools/postgrestools/bin/postgrestools @@ -33,7 +33,7 @@ function isMusl() { } catch (err) { stderr = err.stderr; } - if (stderr.indexOf("musl") > -1) { + if (stderr?.indexOf("musl") > -1) { return true; } return false; diff --git a/packages/@postgrestools/postgrestools/package.json b/packages/@postgrestools/postgrestools/package.json index a172d65f3..247ba4157 100644 --- a/packages/@postgrestools/postgrestools/package.json +++ b/packages/@postgrestools/postgrestools/package.json @@ -40,5 +40,8 @@ "@postgrestools/cli-x86_64-linux-gnu": "", "@postgrestools/cli-aarch64-linux-gnu": "", "@postgrestools/cli-x86_64-linux-musl": "" + }, + "scripts": { + "test": "bun test" } } diff --git a/packages/@postgrestools/postgrestools/test/bin.test.js b/packages/@postgrestools/postgrestools/test/bin.test.js new file mode 100644 index 000000000..9b85042e5 --- /dev/null +++ b/packages/@postgrestools/postgrestools/test/bin.test.js @@ -0,0 +1,62 @@ +import { describe, it, expect } from "bun:test"; +import { spawn } from "child_process"; +import { join, dirname } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const binPath = join(__dirname, "../bin/postgrestools"); +const testSqlPath = join(__dirname, "test.sql"); + +describe("postgrestools bin", () => { + + it("should check a SQL file successfully", async () => { + const result = await new Promise((resolve) => { + const proc = spawn("node", [binPath, "check", testSqlPath], { + env: { ...process.env }, + }); + + let stdout = ""; + let stderr = ""; + + proc.stdout.on("data", (data) => { + stdout += data.toString(); + }); + + proc.stderr.on("data", (data) => { + stderr += data.toString(); + }); + + proc.on("close", (code) => { + resolve({ code, stdout, stderr }); + }); + }); + + expect(result.code).toBe(0); + expect(result.stderr).toBe(""); + }); + + it("should fail when file doesn't exist", async () => { + const result = await new Promise((resolve) => { + const proc = spawn("node", [binPath, "check", "nonexistent.sql"], { + env: { ...process.env }, + }); + + let stdout = ""; + let stderr = ""; + + proc.stdout.on("data", (data) => { + stdout += data.toString(); + }); + + proc.stderr.on("data", (data) => { + stderr += data.toString(); + }); + + proc.on("close", (code) => { + resolve({ code, stdout, stderr }); + }); + }); + + expect(result.code).not.toBe(0); + }); +}); diff --git a/packages/@postgrestools/postgrestools/test/test.sql b/packages/@postgrestools/postgrestools/test/test.sql new file mode 100644 index 000000000..9e13a3eff --- /dev/null +++ b/packages/@postgrestools/postgrestools/test/test.sql @@ -0,0 +1 @@ +select 1; \ No newline at end of file From cf0ecde63897f9ca4df54abda3932a6708956828 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Sat, 20 Sep 2025 08:16:25 +0200 Subject: [PATCH 2/5] fix: setup postgres --- .github/workflows/pull_request.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index feda0a372..62325910e 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -182,15 +182,6 @@ jobs: - os: windows-2022 - os: ubuntu-22.04 - os: macos-14 - services: - postgres: - image: postgres:latest - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: postgres - ports: - - 5432:5432 steps: - name: Checkout PR branch uses: actions/checkout@v4 @@ -202,6 +193,8 @@ jobs: uses: moonrepo/setup-rust@v1 with: cache-base: main + - name: Setup Postgres + uses: ./.github/actions/setup-postgres - name: Build main binary run: cargo build -p pgt_cli --release - name: Setup Bun From 97e1802d7e78c0305fe38e36103fc6e6eb1f73d3 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Sat, 20 Sep 2025 08:25:04 +0200 Subject: [PATCH 3/5] progress --- .github/workflows/pull_request.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 62325910e..8d0ca84a1 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -170,18 +170,20 @@ jobs: - name: Run tests run: cargo test --workspace - test-js-packages: + test-js-bindings: name: Test JS Packages # use the same image we use for compiling - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - # use the same images we use for compiling - - os: windows-2022 - - os: ubuntu-22.04 - - os: macos-14 + runs-on: ubuntu-22.04 + services: + postgres: + image: postgres:latest + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + ports: + - 5432:5432 steps: - name: Checkout PR branch uses: actions/checkout@v4 @@ -193,8 +195,6 @@ jobs: uses: moonrepo/setup-rust@v1 with: cache-base: main - - name: Setup Postgres - uses: ./.github/actions/setup-postgres - name: Build main binary run: cargo build -p pgt_cli --release - name: Setup Bun From b974d1dd86f7916a126a1cf9e2906d721b73a2f2 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Sat, 20 Sep 2025 08:38:06 +0200 Subject: [PATCH 4/5] fix: setup postgres --- .../@postgrestools/postgrestools/bin/postgrestools | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/@postgrestools/postgrestools/bin/postgrestools b/packages/@postgrestools/postgrestools/bin/postgrestools index 985838c85..7703f2f2f 100755 --- a/packages/@postgrestools/postgrestools/bin/postgrestools +++ b/packages/@postgrestools/postgrestools/bin/postgrestools @@ -21,9 +21,9 @@ const PLATFORMS = { }; function isMusl() { - let stderr; + let stdout; try { - stderr = execSync("ldd --version", { + stdout = execSync("ldd --version", { stdio: [ "ignore", // stdin "pipe", // stdout – glibc systems print here @@ -31,9 +31,11 @@ function isMusl() { ], }); } catch (err) { - stderr = err.stderr; + if (typeof err === "object" && err !== null && "stderr" in err) { + stdout = err.stderr; + } } - if (stderr?.indexOf("musl") > -1) { + if (typeof stdout === 'string' && stdout?.indexOf("musl") > -1) { return true; } return false; From afde04d060480f6cbfcb6650ea250ef396c76947 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Sat, 20 Sep 2025 08:42:43 +0200 Subject: [PATCH 5/5] progress --- packages/@postgrestools/postgrestools/bin/postgrestools | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/@postgrestools/postgrestools/bin/postgrestools b/packages/@postgrestools/postgrestools/bin/postgrestools index 7703f2f2f..72de7de3b 100755 --- a/packages/@postgrestools/postgrestools/bin/postgrestools +++ b/packages/@postgrestools/postgrestools/bin/postgrestools @@ -31,11 +31,9 @@ function isMusl() { ], }); } catch (err) { - if (typeof err === "object" && err !== null && "stderr" in err) { stdout = err.stderr; - } } - if (typeof stdout === 'string' && stdout?.indexOf("musl") > -1) { + if (typeof stdout === 'string' && stdout.indexOf("musl") > -1) { return true; } return false;